我很难区分数据映射脚本中的“ UNIQUEIDENTIFIER”和“ 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 '\'}
任何帮助将不胜感激。
答案 0 :(得分:0)
假设您的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