1

我表中的名字看起来像这样,

Select fname-ab, fname-wxyz, lname-ab, lname-wxyz
From table

有没有办法编写一个查询来返回字段名称以结尾的所有字段的结果-ab

4

2 回答 2

3

大多数数据库都支持 information_schema.columns 表。您可以执行以下查询以获取符合您条件的所有列:

select column_name
from information_schema.columns
where table_name = 'table' and column_name like '%ab'

然后,您可以将此列表放入 Excel,创建一个公式以在末尾添加逗号,将列表复制到 SQL 接口中,并修复语法(添加select、添加from、删除列表中的最后一个逗号)。

这实际上比描述更容易做到。

或者,您可以使用某种形式的动态 SQL,但其描述取决于数据库。

于 2013-01-22T21:41:10.843 回答
0

这会工作...

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
于 2013-01-22T23:03:26.950 回答