Nik*_*iks 45 sql sql-server-2008
我想在SQL Server 2008中描述一个表,就像我们可以用DESCOracle中的命令一样.
我有桌子[EX].[dbo].[EMP_MAST],我想描述,但它不起作用.
显示错误:
数据库"master"中不存在"EMP_MAST"对象,或者此操作无效.
Jai*_*dra 79
您可以使用sp_columns,一个用于描述表的存储过程.
exec sp_columns TableName
Run Code Online (Sandbox Code Playgroud)
您也可以使用sp_help.
Bri*_*dge 40
根据这个文件:
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'
Run Code Online (Sandbox Code Playgroud)
Dan*_*ula 28
sp_help内置过程是SQL Server最接近Oracle的DESC函数IMHO的过程
sp_help MyTable
Run Code Online (Sandbox Code Playgroud)
使用
sp_help "[SchemaName].[TableName]"
Run Code Online (Sandbox Code Playgroud)
要么
sp_help "[InstanceName].[SchemaName].[TableName]"
Run Code Online (Sandbox Code Playgroud)
如果您需要进一步限定表名
可能这可以帮助:
Use MyTest
Go
select * from information_schema.COLUMNS where TABLE_NAME='employee'
Run Code Online (Sandbox Code Playgroud)
{where:MyTest = DatabaseName Employee = TableName} - 可选条件
您可以使用键盘快捷键来表格中的描述/详细信息SQL Server 2008.
它将显示所提到的表的详细信息/描述,
1)表创建日期,
2)列描述,
3)标识,
4)索引,
5)约束,
6)引用等如下所示[ 示例 ]:
小智 6
我喜欢尝试进行翻译的答案,但是,在使用代码时,它不喜欢非VARCHAR类型的列,例如BIGINT或DATETIME.我今天需要类似的东西所以我花时间根据自己的喜好修改它.它现在也被封装在一个函数中,这是我能找到的最接近的东西,只需输入describe就像oracle一样处理它.我可能仍然在我的case语句中缺少一些数据类型,但这适用于我尝试过的所有内容.它也按顺序排列.这可以扩展到容易包括主键列.
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
Run Code Online (Sandbox Code Playgroud)
一旦你在这里创建函数是我使用的示例表
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)
)
Run Code Online (Sandbox Code Playgroud)
然后你可以按如下方式执行它
select * from describe ('yourtable')
Run Code Online (Sandbox Code Playgroud)
它返回以下内容
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)
希望这有助于某人.