我表中的名字看起来像这样,
Select fname-ab, fname-wxyz, lname-ab, lname-wxyz
From table
有没有办法编写一个查询来返回字段名称以结尾的所有字段的结果-ab
我表中的名字看起来像这样,
Select fname-ab, fname-wxyz, lname-ab, lname-wxyz
From table
有没有办法编写一个查询来返回字段名称以结尾的所有字段的结果-ab
大多数数据库都支持 information_schema.columns 表。您可以执行以下查询以获取符合您条件的所有列:
select column_name
from information_schema.columns
where table_name = 'table' and column_name like '%ab'
然后,您可以将此列表放入 Excel,创建一个公式以在末尾添加逗号,将列表复制到 SQL 接口中,并修复语法(添加select
、添加from
、删除列表中的最后一个逗号)。
这实际上比描述更容易做到。
或者,您可以使用某种形式的动态 SQL,但其描述取决于数据库。
这会工作...
Declare @tableSchema Varchar(50) = 'dbo',
@tableName Varchar(50) = 'table',
@columns Nvarchar(Max),
@sql Nvarchar(Max)
Select @columns = Coalesce(@columns + ',','') + '[' + sc.name + ']'
From syscolumns sc
Join sysobjects so
On sc.id = so.id
Join sys.schemas ss
On so.[uid] = ss.[schema_id]
Where so.name = @tableName
And ss.name = @tableSchema
And sc.name like '%-ab'
Set @sql = 'Select ' + @columns + '
From [' + @tableSchema + '].[' + @tableName + ']'
Exec sp_executesql @sql