我需要检查列是否包含唯一标识符,以便我可以检查它是否为空。因为我现在这样做的方式没有检查其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适用于其他数据类型。