检查nvarchar列中的Guid值

时间:2012-03-26 04:20:28

标签: sql sql-server sql-server-2008 tsql

我有一个包含NVARCHAR列的表,可以包含GUID或字符串。这是一张遗留表,所以我不能在这个时间点改变。

我需要使用GUID获取记录。有什么建议?我现在正在使用类似下面的东西。如果将以下查询中的like运算符之后的部分设为UDF会影响性能还是有更好的方法?

SELECT * 
  FROM Table1 
 WHERE Column1 LIKE '[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]'

2 个答案:

答案 0 :(得分:2)

您可以创建一个自定义函数,尝试验证数据并检测它。我在这里找到了一些关于tsql的东西:

http://ask.sqlservercentral.com/questions/23114/best-way-to-check-that-a-stringvarchar-guid-is-val.html

更新

在这里检查marc_s的答案:

How to check if a string is a uniqueidentifier?

答案 1 :(得分:1)

您可以创建sql clr function并致电Guid.TryParse