【问题标题】:SQL query on field name字段名称的 SQL 查询
【发布时间】:2013-01-23 07:03:26
【问题描述】:

我表中的名字是这样的,

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

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

【问题讨论】:

  • 你用的是什么 rdbms?
  • 您有什么特殊原因想要这样做吗?
  • 取决于 RDBMS。在 SQL Server 中,首先想到的是系统表和 exec 的组合。第二个是使用pivot & unpivot。话虽如此,这感觉像是您的数据库设计的问题,而不是 SQL 的困难

标签: sql


【解决方案1】:

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

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

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

这实际上比描述容易。

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

【讨论】:

    【解决方案2】:

    这会起作用...

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多