2009-04-30 16 views
3

私は既存のプログラムを配備しています。一部の顧客データベースでは、フィールドがnullではなく、その他のフィールドにはnullが設定されています。私はデータベースを修正するパッチを実行して、カラムがヌル可能になるようにする必要がありますが、すべてのデータベースに対して実行する必要はありません。このチェックを実行するためにSQL Serverで使用できる単純なメソッドはありますか?好ましくは、SQLスクリプトの一部として実行できるもの。フィールドがnullではないかどうかを判断する方法?

答えて

10

はINFORMATION_SCHEMAビューを調べてください。たとえば、

SELECT 
    IS_NULLABLE 
FROM 
    My_DB.INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'dbo' AND 
    TABLE_NAME = 'My_Table' AND 
    COLUMN_NAME = 'My_Column' 

IS_NULLABLEは "YES"または "NO"のいずれかになります。

2
select Table_Name, Column_Name, Is_Nullable 
from information_schema.columns 

はあなたにその情報を取得します

+0

なぜinformation_schema.columnsがsyscolumnsよりも優れているかについてコメントできますか?私は正直には分かりませんが、敵対的ではありません。 –

+2

システムテーブル(sys.objectsとsysobjectsなど)と2よりも変更の影響を受けにくいため、スキーマビューを使用することが可能な場合は可能です。システムテーブルの情報を参考にして集計する傾向があります(外部キー参照など) – cmsjr

+0

完璧、ありがとうございます。 –

2
select isnullable from syscolumns where name = 'status' 
+1

この問合せには、複数の結果を得るステータス列を持つ複数の表がある場合と同様に、where句項目を追加する必要があります。 –

関連する問題