Как получить результат, заключив квадратную скобку в каждое значение при использовании ключевого слова IN в сводной таблице? - PullRequest
0 голосов
/ 09 января 2019

Я пишу SQL-запрос для создания сводной таблицы. У меня есть пример кода, где я получаю результат без ошибок, но результатом должны быть значения, заключенные в квадратные скобки для каждого значения вместо всего результата. Как мне настроить его?

Я пытался использовать функцию цитаты, но она заключает квадратную скобку вокруг всего вывода.

DECLARE @CityNames NVARCHAR(MAX) = '', @t varchar(max) = 'jay, sam'

SELECT  @CityNames +=   QUOTENAME(@t)+ ','


select @CityNames

Я ожидаю, что вывод будет [jay], [sam], но фактический вывод будет [jay, sam].

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Я нашел ответ с помощью функции QUOTENAME (), мы можем следовать приведенному ниже коду или коду выше @gordon Linoff.

 DECLARE @CityNames NVARCHAR(MAX) = '', @t nvarchar(max) = 'jay, sam', @result 
 varchar(max),  @sSQL nvarchar(max)

SELECT  @CityNames +=    + QUOTENAME(value)+','  from (select value from 
 dbo.fx_split( @t, ','))x


IF (RIGHT(@CityNames, 1) = ',')
   set @CityNames = LEFT(@CityNames, LEN(@CityNames) - 1)

   select @citynames
0 голосов
/ 09 января 2019

Это то, что вы хотите?

select '[' + @t + replace(@t, ', ', '], [') + ']')

QUOTENAME() обрабатывает строку как один идентификатор, заключая его в соответствующие кавычки. Вышеуказанное должно работать для наиболее разумных имен столбцов.

...