SQL Server 2012:检查列是否为GUID和NULL



我需要检查列是否包含唯一标识符,以便我可以检查它是否为空。因为我现在这样做的方式没有检查其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
where table_name ='ctusers'和column_name<>'rowguid'和column_name<>'modifieddate'

您可以使用try_convert测试NULL和有效的GUID:

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

try_convert适用于其他数据类型。

相关内容

最新更新