sql选择列名如

use*_*231 30 sql

我有一个包含列名的表a1,a2...,b1.b2....

如何选择所有列名称相似的a%

Blo*_*ard 57

这将为您提供清单

select * from information_schema.columns 
where table_name='table1' and column_name like 'a%'
Run Code Online (Sandbox Code Playgroud)

如果要使用它来构造查询,可以执行以下操作:

declare @sql nvarchar(max)
set @sql = 'select '
select @sql = @sql + '[' + column_name +'],'
from information_schema.columns 
where table_name='table1' and column_name like 'a%'
set @sql = left(@sql,len(@sql)-1) -- remove trailing comma
set @sql = @sql + ' from table1'
exec sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)

请注意,上面是为SQL Server编写的.

  • 谢谢 Blorgbeard,我喜欢你还包含一个查询来动态使用实际列。我处于一种列在我无法控制的表格上增长的情况,所以这对我来说非常有效。投票了! (2认同)

Dam*_*ash 6

您需要使用视图 INFORMATION_SCHEMA.COLUMNS

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = my_table_name AND COLUMN_NAME like 'a%'
Run Code Online (Sandbox Code Playgroud)

要内联行,您可以使用PIVOT并执行EXEC()函数。


Tec*_*nic 5

这将显示表名和列名

select table_name,column_name from information_schema.columns
where column_name like '%breakfast%'
Run Code Online (Sandbox Code Playgroud)


Ste*_*ung 1

标准 SQL 无法做到这一点。列名不像 SQL 中的数据那样对待。

如果您使用的 SQL 引擎具有存储列名称、类型等的元数据表,您可以在该表上进行选择。

  • @Blorgbeard,你是对的 information_schema 是标准 SQL。然而,并非所有引擎都实现它,也不是所有引擎都使用这个名称。确实取决于发动机。 (3认同)