在数据透视表中使用IN关键字时,如何获得方括号包围每个值的结果?

时间:2019-01-09 15:29:17

标签: sql sql-server-2012

我正在编写用于创建数据透视表的sql查询。我有示例代码,在这里我得到的结果没有错误,但是结果应该是每个值都用方括号括起来的值,而不是整个结果。我该如何设置?

我尝试使用引号功能,但是它在整个输出中放置了方括号。

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

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


select @CityNames

我希望输出为[jay],[sam],但实际输出为[jay,sam]。

2 个答案:

答案 0 :(得分:1)

这是您想要的吗?

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

QUOTENAME()将字符串视为单个标识符,并适当引用以上内容应适用于最合理的列名。

答案 1 :(得分:0)

我已经使用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