Как использовать динамическое имя столбца из таблицы в предложении where - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь получить динамические имена столбцов из таблицы, используя 'INFORMATION_SCHEMA.COLUMNS'. Ниже приведен запрос.

Select  COLUMN_NAME into #TempTable 
  from INFORMATION_SCHEMA.COLUMNS 
  where TABLE_NAME = 'MyTable'

Результат:

COLUMN_NAME
Person_ID
Person_Name
Person_Address

Желание сделать:

Select * from MyTable where Person_ID = 1

Какими могут быть способы использования Person_ID от 1-го запроса до второго?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

если вы пытаетесь сделать что-то вроде этого

select * from [table] where [col] =@param

, тогда вы можете использовать запрос, как показано ниже

   declare @query nvarchar(max)
    select 
      @query='select * from '+t.name + 
            ' where '+c.name + ' ='+
            case 
              when c.name ='Person_ID' then '1'
              when c.name ='Someother_ID' then '10'
              else c.name
            end

    from sys.tables t join sys.columns c 
    on c.object_id=t.object_id
    and t.name ='MyTable'
    exec(  @query)
0 голосов
/ 11 июня 2018

Вы можете использовать динамический SQL для выполнения этого с помощью команды EXEC.

Создайте строку VARCHAR для вашего запроса на основе динамических имен столбцов, которые вы получаете из первого запроса, затем EXEC в строке, которую вы создали.

Вы не предоставили достаточно информации о том, какие именно столбцы вам нужны в вашем предложении WHERE, или как вы определяете, какие из них, но динамический SQL кажется вам тем, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...