簡體   English   中英

如何在SQL Server 2008中對列名稱賦予條件

[英]How can I give condition on the column names in SQL Server 2008

我的數據庫具有以下列:

keyword, part1_d1, part1_d2 ........ part1_d25, part2_d26, ......part2_d34

僅供參考:d1到d34是文檔。

我如何給出查詢以獲取具有column_name之類的列,例如'%part1%'; 如下

keyword, part1_d1, part1_d2, ........ part1_d25 

我嘗試查詢:

select (Select COLUMN_NAME 
          From INFORMATION_SCHEMA.COLUMNS
         where COLumn_NAME like '%part1%') 
       , keyword
  from sample

但這沒用...

請讓我知道該怎么辦?

SQL不支持動態列名-您必須明確聲明要使用的列名,或者使用星號“ *”表示表中的所有列。

動態SQL將允許您獲取列的列表,並在執行之前將SQL語句創建為字符串-這是最終用於嘗試查詢的條件。 我建議在進一步閱讀之前閱讀此內容-Dynamic SQL的詛咒和祝福

SQL Server 2005+:

DECLARE @sql NVARCHAR(4000)

   SET @sql = 'SELECT ' + STUFF((SELECT ', ' + x.column_name
                                   FROM INFORMATION_SCHEMA.COLUMNS x
                                   JOIN INFORMATION_SCHEMA.TABLES y ON y.object_id = x.object_id
                                  WHERE x.column_name LIKE '%part1%'
                                    AND y.table_name = 'sample'
                               GROUP BY x.column_name
                                FOR XML PATH ('')), 1, 2, '') + ' , keyword
                FROM sample '

BEGIN

  EXEC sp_executesql @sql

END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM