SQL Server 2012:检查列是否为GUID且为null

时间:2017-09-05 07:43:28

标签: sql-server

我需要检查列是否包含唯一标识符,以便检查它是否为空。因为我现在这样做的方式并不检查它的GUID是否可以将其转换为int:

IsNull(d.[' + Column_name + '], 0)

以下是代码:

Select @sql = @sql + 
'Case 
    when TRY_CONVERT(uniqueidentifier, '+ Column_Name +') IS NOT NULL and  IsNull(Convert(nvarchar(36),i.['+Column_Name+']),0) = IsNull(Convert(nvarchar(36),d.['+Column_Name+']),0)
        then ''''
    when TRY_CONVERT(uniqueidentifier, '+ Column_Name +') IS NULL and IsNull(i.[' + Column_Name + '],0) = IsNull(d.[' + Column_name + '], 0)  
        then ''''
    else ' + quotename(Column_Name, char(39)) + ' + '',''' + ' end +' 

来自information_schema.columns
table_name ='CTUsers'和column_name<>'rowguid'和column_name<>'modifieddate'

1 个答案:

答案 0 :(得分:0)

您可以使用TRY_CONVERT一次性测试NULL和有效的GUID:

...
CASE
    WHEN TRY_CONVERT(uniqueidentifier, column) IS NULL THEN 'x'
    ELSE 'y'
END
...

TRY_CONVERT适用于其他数据类型。