将唯一的IndersFier值与数据示例中可能的Varchar分开



我很难区分'uniquelIdentifier'&数据映射脚本中的" varchar"。它的数据不匹配。

我到目前为止尝试过:

--my_field is a UNIQUEIDENTFIER
    SELECT distinct my_field, len(my_field), count(my_field) 
    FROM my_table_ 
    WHERE len(my_field) < 36 OR len(my_field) > 36 
    group by my_field
    SELECT my_field, len(my_field) 
    FROM my_table_ 
    WHERE my_field LIKE '%[!#%&+,./:;<=>@`{|}~"()*\_^?[]'']%' {ESCAPE ''}

任何帮助都将不胜感激。

假设您的SQL Server版本是2012年或更高版本(如果没有的话,您确实应该升级,因为2012年是Microsoft仍然支持的最早版本) - 您可以使用try_cast-它将返回null如果演员失败:

样本数据:

DECLARE @T AS TABLE
(
    my_field varchar(100)
)
INSERT INTO @T (my_field) VALUES
('608DC3C3-1B2E-47AA-9362-33CD76DA3F6A'), ('A3871EA9-172D-49DD-8874-A850857F01FB'),
('A3871EA9-THIS-IS-WRONG-A850857F01FB'), ('And so is this')

查询:

SELECT my_field
FROM @T
WHERE TRY_CAST(my_Field AS UNIQUEIDENTIFIER) IS NULL

结果:

my_field
A3871EA9-THIS-IS-WRONG-A850857F01FB
And so is this

最新更新