3

特定のテーブルの列がInformixデータベースでnull許容かどうかをプログラムで判断する方法を理解しようとしています。特定のデータの列データを取得する方法を理解しましたが、これらの結果が私の目的に役立つとは思えません。つまり、列がnullを受け入れるかどうかを示す属性がないようです。

別のsys__テーブルまたはそのようなものに参加する必要がありますか?

私が現在使用しているクエリ:

SELECT *
FROM "informix".syscolumns
WHERE tabid = (SELECT tabid FROM "informix".systables WHERE tabname = 'myTable');

これにより、colname、tabid、colno、coltype、collength、colmin、colmax、extended_id、seclabelid、およびcolattrを含むテーブルが返されます。おそらく、null許容プロパティはcoltypeの何かです...?

4

1 に答える 1

4

マニュアルからの引用:

前のcoltypeページにリストされているコードは、列の次の機能を示すビットマップによってインクリメントできます。

ビット設定時のビット値の重要性
0x0100NULL値は許可されていません

次に、次のページで:

同様に、列でNULL値が許可されていない場合、coltype値は256ずつ増加します。このような列のデータ型を判別するには、値から256を減算し、可能なcoltype値に基づいて余りを評価します。たとえば、coltype値が262の場合、256を引くと6の余りが残り、列のデータ型がSERIALであることを示します。

于 2012-12-09T18:13:18.090 に答える