我需要检查列是否包含唯一标识符,以便检查它是否为空。因为我现在这样做的方式并不检查它的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'
答案 0 :(得分:0)
您可以使用TRY_CONVERT一次性测试NULL
和有效的GUID:
...
CASE
WHEN TRY_CONVERT(uniqueidentifier, column) IS NULL THEN 'x'
ELSE 'y'
END
...
TRY_CONVERT适用于其他数据类型。