T-SQLでの型が固定長であるかどうか(ランタイム)を確認する方法?

StackOverflow https://stackoverflow.com/questions/676752

質問

は、それがタイプ(例えばnvarchar型またはINT)は、いくつかのシステム・テーブルを照会することによって、固定長であるかどうT-SQLを使用して、ランタイムを見つけることは可能ですか?

私はこれを行う必要がある理由は、私は、SQLコードの実行時間を生成し、(デザイン時に不明である)一部の列の種類に応じて、いくつかの宣言(DECLARE @foo SOMETYPE(LENGTH)またはDECLARE @foo SOMETYPE)を生成する必要がありますする必要があるということです。

私の現在の賭けは、(sys.all_columns.max_length = sys.types.max_lengthは、少なくともnvarchar型のために、特別なコードを(-1)があるようですので)max_lengthもしそうなら、それは固定長であると仮定した場合、私は確認することができるということです。

役に立ちましたか?

解決

あなたはinformation_schema.columnsで見ることができます。文字入力されたカラムは、それがCHARACTER_MAXIMUM_LENGTHで指定される最大長さを持っている場合は、数値フィールドは、その精度がNUMERIC_PRECISIONで定義されています。カップルのノート、私の知る限りにint型は、また、常に4バイトですNVARCHAR(10)が2を保持している場合のvar種類のいずれかが、定義によって長さが固定されていない、とだけ彼らの最大の長さまで保存されています文字列、それだけで店舗2つの文字。だから、固定長文字列を検出するには、charまたはnchar型のタイプを探していることになります。

他のヒント

はい、それは可能です。これを行う方法を確認するために、組み込みのストアドプロシージャのsp_columnsは用のコードを見てます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top