かっこなどすべてを含むSQL Server列定義を取得するにはどうすればよいですか?

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

質問

CREATE TABLEステートメントで使用できる方法でINFORMATION_SCHEMA.COLUMNSからデータ型を取得するスマートな方法が必要です。問題は、NUMERIC _ PRECISIONやNUMERIC _ SCALEなど、理解する必要がある「余分な」フィールドです。

明らかに、INTEGERの列(10の精度と0のスケール)は無視できますが、NUMERICなど、興味のある他の型があります。テーブルを解析するための大量のコードを書かずに、列定義から一種のフィールドショートハンドを取得する方法についてのアイデアはありませんか?

次のようなものを手に入れたいです: int、 日付時刻、 お金、 数値**(10,2)**

役に立ちましたか?

解決

いくつかの問題を修正してすべての人のために更新するための GalacticCowboyの回答の更新(リッピング!) SQL Server 2008R2データ型:

select data_type + 
    case
        when data_type like '%text' or data_type in ('image', 'sql_variant' ,'xml')
            then ''
        when data_type in ('float')
            then '(' + cast(coalesce(numeric_precision, 18) as varchar(11)) + ')'
        when data_type in ('datetime2', 'datetimeoffset', 'time')
            then '(' + cast(coalesce(datetime_precision, 7) as varchar(11)) + ')'
        when data_type in ('decimal', 'numeric')
            then '(' + cast(coalesce(numeric_precision, 18) as varchar(11)) + ',' + cast(coalesce(numeric_scale, 0) as varchar(11)) + ')'
        when (data_type like '%binary' or data_type like '%char') and character_maximum_length = -1
            then '(max)'
        when character_maximum_length is not null
            then '(' + cast(character_maximum_length as varchar(11)) + ')'
        else ''
    end as CONDENSED_TYPE
    , *
from information_schema.columns
order by table_schema, table_name, ordinal_position

他のヒント

select column_type = data_type + 
    case
        when data_type like '%text' then ''
        when data_type like '%char' and character_maximum_length = -1 then '(max)'
        when character_maximum_length is not null then '(' + convert(varchar(10), character_maximum_length) + ')'
        when data_type = 'numeric' then '(' + convert(varchar(10), isnull(numeric_precision, 18)) + ', ' + 
            convert(varchar(10), isnull(numeric_scale, 0)) + ')'
        else ''
    end
,*
from information_schema.columns

SMOスクリプトは、スクリプト生成を処理する必要があります。これは、MSがSQL Management Studioでスクリプト生成に使用するものだと思います。

http://msdn.microsoft.com/en-us/library /ms162153.aspx

@YourComment- CREATE TABLEステートメントで使用できる方法でINFORMATION_SCHEMA.COLUMNSからデータ型を取得するスマートな方法が必要です

これはあなたが求めたものです。それ以外の場合は、情報スキーマビューの結果を解析する必要があります。

smoを使用している場合は、列オブジェクト

Column.Property [" NumericScale"]。Value

Column.Property [" NumericPrecision"]。Value

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