2017-09-05 7 views
0

列に一意の識別子が含まれているかどうかを確認して、空であるかどうかを確認する必要があります。 information_schema.columns
TABLE_NAME =「CTUsersからSQL Server 2012:列がGUIDで、NULLであるかどうかを確認します。

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 +' 

:ここ

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

はコードです:私はそれが今そのGUIDかどうかを確認doesntのとint型に変換カントやっている方法であるためあなたはNULLをテストするためにTRY_CONVERTを使用し、中の有効なGUIDできる 'とCOLUMN_NAME <>' ROWGUID」とCOLUMN_NAME <> 'modifieddate'

+2

私はこれがこの問題の周りの3番目の質問だと思うし、いくつかのコンセプトを混乱させているように思えます(つまり、一意の識別子を含む列はどうすれば空になれますか? *何でも)。この行を続行するよりも、達成したいことのサンプルデータ*、*期待される結果*、*明確な説明を提示できますか? –

+0

問題は、一意の識別子の列には1つのセルがNULLであることです。だから、チェックに合格するたびに、それをintに変換しようとすると失敗します。私が達成しようとしているのは、このテーブルで発生した変更を記録することです。 – aggicd

+0

'GUID'をどのように' INT'に変換していますか? – Filburt

答えて

0

one go:

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

TRY_CONVERTは他のデータ型でも同じです。

関連する問題