知っといて損はないクエリ。
意外とこういうことできることを知らない人が多い気がする。
…うちの会社はね。
後付でテーブル設計書作るときに必要な情報も大抵はこれでOKかと。
- SELECT
- [COL].TABLE_NAME AS [テーブル名]
- , [COL].ORDINAL_POSITION AS [列番]
- , CASE
- WHEN [KEY].CONSTRAINT_NAME IS NULL THEN ''
- ELSE 'PK'
- END AS [主キー]
- , CASE
- WHEN COLUMNPROPERTY(
- OBJECT_ID(QUOTENAME([COL].TABLE_SCHEMA) + '.' + QUOTENAME([COL].TABLE_NAME))
- , [COL].COLUMN_NAME
- , 'IsIdentity') = 0 THEN ''
- ELSE 'あり'
- END AS [自動発番]
- , [COL].COLUMN_NAME AS [列名]
- , [COL].DATA_TYPE AS [データ型]
- , CASE
- WHEN [COL].DATA_TYPE LIKE '%char' THEN
- CASE [COL].CHARACTER_MAXIMUM_LENGTH
- WHEN -1 THEN 'MAX'
- WHEN NULL THEN ''
- ELSE ISNULL(CONVERT(VARCHAR(10), [COL].CHARACTER_MAXIMUM_LENGTH), '')
- END
- WHEN [COL].DATA_TYPE IN ('decimal', 'numeric') THEN
- CONVERT(varchar, [COL].NUMERIC_PRECISION) + ',' + CONVERT(varchar, [COL].NUMERIC_SCALE)
- ELSE ISNULL(CONVERT(varchar, [COL].NUMERIC_PRECISION), '---')
- END AS [データサイズ]
- , CASE
- WHEN [COL].IS_NULLABLE = 'NO' THEN 'NG'
- ELSE 'OK'
- END AS [NULL許容]
- , ISNULL([COL].COLUMN_DEFAULT, '') AS [DEFAULT]
- FROM
- INFORMATION_SCHEMA.COLUMNS [COL]
- LEFT OUTER JOIN
- INFORMATION_SCHEMA.KEY_COLUMN_USAGE [KEY]
- ON [COL].TABLE_NAME = [KEY].TABLE_NAME
- AND [COL].COLUMN_NAME = [KEY].COLUMN_NAME
- WHERE
- 1 = 1
- --AND [COL].TABLE_NAME = ''
- --AND [COL].COLUMN_NAME LIKE '%Kingaku%'
- ORDER BY
- [COL].TABLE_NAME
- , [COL].ORDINAL_POSITION
0 件のコメント:
コメントを投稿