[英]How can I give condition on the column names in SQL Server 2008
I have my database with the columns as follows: 我的数据库具有以下列:
keyword, part1_d1, part1_d2 ........ part1_d25, part2_d26, ......part2_d34
FYI: d1 through d34 are documents.. 仅供参考:d1到d34是文档。
How can I give a query to obtain columns with column_name like '%part1%'; 我如何给出查询以获取具有column_name之类的列,例如'%part1%'; as below
如下
keyword, part1_d1, part1_d2, ........ part1_d25
I tried the query: 我尝试查询:
select (Select COLUMN_NAME
From INFORMATION_SCHEMA.COLUMNS
where COLumn_NAME like '%part1%')
, keyword
from sample
But it didn't work... 但这没用...
Please let me know what to do? 请让我知道该怎么办?
SQL doesn't support dynamic column names - you either have to explicitly state which ones you want, or use the asterisk "*" to indicate all the columns in the table. SQL不支持动态列名-您必须明确声明要使用的列名,或者使用星号“ *”表示表中的所有列。
Dynamic SQL would allow you to get a list of the columns, and create a SQL statement as a string before executing it - which is what you need to eventually use for the query you attempted. 动态SQL将允许您获取列的列表,并在执行之前将SQL语句创建为字符串-这是最终用于尝试查询的条件。 I recommend reading this-- The Curse and Blessings of Dynamic SQL -- before looking further.
我建议在进一步阅读之前阅读此内容-Dynamic SQL的诅咒和祝福 。
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.