当前位置:  开发笔记 > 后端 > 正文

如何从SQL Server中的表中获取列名?

如何解决《如何从SQLServer中的表中获取列名?》经验,为你挑选了15个好方法。

我想查询表的所有列的名称.我找到了如何做到这一点:

神谕

MySQL的

PostgreSQL的

但我需要知道:如何在Microsoft SQL Server(在我的情况下为2008)中完成此操作?



1> 小智..:

您可以通过查询信息架构视图来获取此信息以及更多信息.

此示例查询:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'

可以在所有这些DB对象上进行:

CHECK_CONSTRAINTS

COLUMN_DOMAIN_USAGE

COLUMN_PRIVILEGES

CONSTRAINT_COLUMN_USAGE

CONSTRAINT_TABLE_USAGE

DOMAIN_CONSTRAINTS

DOMAINS

KEY_COLUMN_USAGE

参数

REFERENTIAL_CONSTRAINTS

例程

ROUTINE_COLUMNS

SCHEMATA

TABLE_CONSTRAINTS

TABLE_PRIVILEGES

TABLES

VIEW_COLUMN_USAGE

VIEW_TABLE_USAGE

VIEWS


"= N'Customers'"中的"N"代表什么?
Qbik"N"用于在ANSI(32位)中处理类似varchar的unicode字符串,在unicode(64位)中处理nvarchar
确认:也适用于**MariaDB**!:)(没有`Nortwind ... ...)
从``INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName'中选择COLUMN_NAME;''

2> Arnkrishn..:

您可以使用存储过程sp_columns,它将返回与给定表的所有列有关的信息.更多信息可以在这里找到http://msdn.microsoft.com/en-us/library/ms176077.aspx

您也可以通过SQL查询来完成.这样的事情应该有所帮助 -

SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName') 

或者变化是:

SELECT   o.Name, c.Name
FROM     sys.columns c 
         JOIN sys.objects o ON o.object_id = c.object_id 
WHERE    o.type = 'U' 
ORDER BY o.Name, c.Name

这将获取所有表中的所有列,按表名排序,然后按列名排序.



3> Limin..:
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

这比获取更好,sys.columns因为它DATA_TYPE直接显示.


+1,因为这是标准的ANSI SQL(https://en.wikipedia.org/wiki/Information_schema)其他答案,如sys.objects不标准

4> mr_eclair..:

您可以sp_help在SQL Server 2008中使用.

sp_help ;

上述命令的键盘快捷方式:选择表名(即突出显示)并按ALT+ F1.



5> KuldipMCA..:

通过使用此查询,您可以得到答案:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'



6> Sachin Parse..:

您可以编写此查询以获取列名称和所有详细信息,而无需在MySql中使用INFORMATION_SCHEMA:

SHOW COLUMNS FROM database_Name.table_name;


@Benjamin,因为这个问题是针对SQL Server而且这个答案是针对MySql的
多数使用其他RDBMS的人是否有相同的问题都没有关系,这与原始问题无关,并将相关答案进一步推低了。

7> 小智..:

- 这是用于记录大型数据库进行转换的另一种变体(编辑为 - 删除静态列)

--This is another variation used to document a large database for conversion (Edited to --remove static columns)

SELECT o.Name                   as Table_Name
     , c.Name                   as Field_Name
     , t.Name                   as Data_Type
     , t.length                 as Length_Size
     , t.prec                   as Precision_
FROM syscolumns c 
     INNER JOIN sysobjects o ON o.id = c.id
     LEFT JOIN  systypes t on t.xtype = c.xtype  
WHERE o.type = 'U' 
ORDER BY o.Name, c.Name

--In the left join, c.type is replaced by c.xtype to get varchar types

- 在左连接中,c.type被c.xtype替换以获取varchar类型



8> 小智..:
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAME是你的桌子



9> 小智..:
SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable 
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position



10> NeverHopeles..:

这个问题缺少以下方法:

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')



11> 小智..:

只需运行此命令

EXEC sp_columns 'Your Table Name'


它没有给出预期的结果

12> 小智..:

您可以尝试这个.这会为所有列名提供各自的数据类型.

desc  ;



13> Luv..:

它将检查给定的是否table基表.

SELECT 
    T.TABLE_NAME AS 'TABLE NAME',
    C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
    WHERE   T.TABLE_TYPE='BASE TABLE'
            AND T.TABLE_NAME LIKE 'Your Table Name'



14> reza akhlagh..:

你可以使用这个查询

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'



15> 小智..:
SELECT c.Name 
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有