DESC
Oracle のコマンドでできることのように、SQL Server 2008 のテーブルを記述したいと思います。
[EX].[dbo].[EMP_MAST]
説明したいテーブルがありますが、うまくいきません。
表示されるエラー:
オブジェクト「EMP_MAST」はデータベース「master」に存在しないか、この操作に対して無効です。
DESC
Oracle のコマンドでできることのように、SQL Server 2008 のテーブルを記述したいと思います。
[EX].[dbo].[EMP_MAST]
説明したいテーブルがありますが、うまくいきません。
表示されるエラー:
オブジェクト「EMP_MAST」はデータベース「master」に存在しないか、この操作に対して無効です。
このドキュメントによると:
DESC MY_TABLE
と同等です
SELECT column_name "Name", nullable "Null?", concat(concat(concat(data_type,'('),data_length),')') "Type" FROM user_tab_columns WHERE table_name='TABLE_NAME_TO_DESCRIBE';
これを SQL Server に相当するものに大まかに翻訳しましたEX
。データベースで実行していることを確認してください。
SELECT column_name AS [name],
IS_NULLABLE AS [null?],
DATA_TYPE + COALESCE('(' + CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1
THEN 'Max'
ELSE CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(5))
END + ')', '') AS [type]
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'EMP_MAST'
これが役立つかもしれません:
Use MyTest
Go
select * from information_schema.COLUMNS where TABLE_NAME='employee'
{ where: MyTest= DatabaseName Employee= TableName } -- オプションの条件
私は変換を試みる答えが好きですが、コードを使用している間は、BIGINT や DATETIME などの VARCHAR タイプではない列は好きではありません。今日は似たようなものが必要だったので、時間をかけて自分の好みに合わせて修正しました。また、関数にカプセル化されました。これは、オラクルが処理するときに説明を入力するだけで見つけることができる最も近いものです。私のケースステートメントにはまだいくつかのデータ型が欠けている可能性がありますが、これは私が試したすべてのもので機能します. また、序数順に並べます。これを拡張して、主キー列を簡単に含めることもできます。
CREATE FUNCTION dbo.describe (@TABLENAME varchar(50))
returns table
as
RETURN
(
SELECT TOP 1000 column_name AS [ColumnName],
IS_NULLABLE AS [IsNullable],
DATA_TYPE + '(' + CASE
WHEN DATA_TYPE = 'varchar' or DATA_TYPE = 'char' THEN
CASE
WHEN Cast(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(5)) = -1 THEN 'Max'
ELSE Cast(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(5))
END
WHEN DATA_TYPE = 'decimal' or DATA_TYPE = 'numeric' THEN
Cast(NUMERIC_PRECISION AS VARCHAR(5))+', '+Cast(NUMERIC_SCALE AS VARCHAR(5))
WHEN DATA_TYPE = 'bigint' or DATA_TYPE = 'int' THEN
Cast(NUMERIC_PRECISION AS VARCHAR(5))
ELSE ''
END + ')' AS [DataType]
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = @TABLENAME
order by ordinal_Position
);
GO
ここで関数を作成したら、私が使用したサンプルテーブルです
create table dbo.yourtable
(columna bigint,
columnb int,
columnc datetime,
columnd varchar(100),
columne char(10),
columnf bit,
columng numeric(10,2),
columnh decimal(10,2)
)
次に、次のように実行できます
select * from describe ('yourtable')
以下を返します
ColumnName IsNullable DataType
columna NO bigint(19)
columnb NO int(10)
columnc NO datetime()
columnd NO varchar(100)
columne NO char(10)
columnf NO bit()
columng NO numeric(10, 2)
columnh NO decimal(10, 2)
これが誰かに役立つことを願っています。
下の行を入力するだけです。
exec sp_help [table_name]