Sql 从数据映射中可能的varchar中分离唯一标识符值
我很难区分数据映射脚本中的“UNIQUEIDENTIFIER”和“varchar”。这是数据不匹配 到目前为止,我试过:Sql 从数据映射中可能的varchar中分离唯一标识符值,sql,sql-server,Sql,Sql Server,我很难区分数据映射脚本中的“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_
--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\u cast-如果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
uniqueidentifier不是varchar,而是guid。我真的不明白你想在这里做什么。请提供更多关于这个问题的背景资料?所需结果唯一标识符是128位二进制数据类型。不要将数据类型的文本表示与它的实际内容混淆。当然,您几乎总能看到文本表示,因为这是我们通常显示数据供人类使用的方式。uniqueidentifier的长度永远不会超过128位,也不会包含任何字符。@ZoharPeled-表中有数百万行和几个varchar值,或者至少它们不是GUID,现在不应该在表中。我很难分辨那些坏苹果。他们是如何在那里结束的这是一个不同的讨论。谢谢所以my_字段作为varchar36列,该列应包含uniqueidentifier的字符串表示形式,但在某些行中,它包含无法转换为uniqueidentifier的值,您想查找这些行吗?问题只是一个转义序列,替换为“已修复”。FML!