Как получить значение по имени динамического поля с помощью запроса выбора SQL - PullRequest
0 голосов
/ 27 мая 2019

Я передаю динамическое имя столбца, имя этого столбца, чтобы получить значение, и ниже моей таблицы

Table_CandidateInfo

Id     Name        Age    City 

1      Mazhar      30     Gulbarga

20     Khan        29     Bidar

Пример1

Declare @ColumnName varchar(100), @Id int

set @ColumnName='Age' 
set @Id=20

select * from Table_CandidateInfo where ID=@Id and 

Я не могу передать имя столбца с запросом and, так как имя столбца является динамической передачей кода. Мой вывод должен быть

29

Пример 2: Если мои @ ColumnName = 'City' и @ Id = 20, то результат должен быть как ниже

Bidar

Ответы [ 2 ]

3 голосов
/ 27 мая 2019

Я думаю, что вы на самом деле после того, как ниже:

DECLARE @ColumnName sysname, @Id int;
SET @Id = 29;
SET @ColumnName = N'Age';

DECLARE @SQL nvarchar(MAX);
SET @SQL = N'SELECT ' + QUOTENAME(@ColumnName) + N' FROM dbo.Table_CandidateInfo WHERE Id = @Id;';
--PRINT @SQL; --Your debugging friend
EXEC sp_executesql @SQL, N'@Id int', @Id = @Id;
2 голосов
/ 27 мая 2019

Увы, вы не можете передавать идентификаторы в качестве параметров.Вам необходимо использовать динамический SQL:

declare @columnName varchar(100);
declare @Id int;

set @ColumnName = 'Age' ;
set @Id = 20;

declare @sql nvarchar(max);

set @sql = '
select *
from Table_CandidateInfo
where [columnName] = @Id';

select @sql = replace(@sql, '[columnName]', quotename(@columnName));

exec sp_executesql @sql,
                   N'@id int',
                   @id=@id;
...