Как я могу дать условие на имена столбцов в SQL Server 2008 - PullRequest
0 голосов
/ 13 августа 2010

У меня есть база данных со следующими столбцами:

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

К вашему сведению: d1 - d34 - документы ..

Как я могу дать запрос для получения столбцов с колонкой, например "% part1%"; как показано ниже

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

Я попробовал запрос:

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

Но это не сработало ...

Пожалуйста, дайте мне знать, что делать?

1 Ответ

3 голосов
/ 13 августа 2010

SQL не поддерживает динамические имена столбцов - вы должны либо явно указать, какие из них вам нужны, либо использовать звездочку "*", чтобы указать все столбцы в таблице.

Динамический SQL позволит вамчтобы получить список столбцов и создать оператор SQL в виде строки перед его выполнением - это то, что вам нужно в конечном итоге использовать для запроса, который вы пытались.Я рекомендую прочитать это - Проклятие и благословения динамического 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...