2012-12-06 11 views
5

設定したものとは異なる特性を有する示してい私は、次の列名とデータ型SQL:なぜSYS.COLUMNSは私のコラムは私が

「ID」BIGINT、「説明」NCHAR(11)と、データベースにテーブルを追加しました

テーブルのデザインビューを確認すると、列のデータ型が設定されたとおりになります。

私はSYS.COLUMNSからそのテーブル内の列を取得するクエリを記述する場合、列の特性が異なる例えばそれがある理由

は、誰かが説明できます(説明のMAX_LENGTHが11ではない、22ですか)?

私はMicrosoft SQL Server Enterprise Edition(64-bit)を使用しています。

答えて

12

sys.columnsの列max_lengthは、最大長をバイトで示します。 ncharは2バイトなので、11文字は22バイトです。

あなたは文字の数をしたい場合は、INFORMATION_SCHEMA.COLUMNS

select COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'YourTable' 

を使用することができますそれとも、COLUMNPROPERTY

select name, 
     columnproperty(object_id, name, 'charmaxlen') as charmaxlen 
from sys.columns 
where object_name(object_id) = 'YourTable' 
+0

はありがとうござい機能を使用することができます。私はあなたの答えを受け入れることができます。 SYS.COLUMNSから列の精度を取得しようとすると、0が返されます。クエリでサイズに設定した数値を返す方法はありますか? EDIT:説明の精度は0になりますが、大文字の場合は19となります。 –

+0

精度は精度の低い数値型(float、decimal)にのみ意味があります。 –

関連する問題