如何将一列中的值转换为带引号、逗号分隔的列表?

问题描述 投票:0回答:5

嗨,我正在使用 SQLServer2008。

在我的表格中有一个字段“代码”。

当我写查询时

select Code from Table1

然后它给出以下输出

Code
----
 9
 8 
 7
 6
 5
 10
 31

我需要的输出是:

["9","8","7","6","5","10","31"]

我的表中有大约 14000 个代码。 我怎样才能得到这个结果?谢谢。

sql-server sql-server-2008 t-sql
5个回答
3
投票

试试这个 -

DECLARE @temp TABLE(Code INT)
INSERT INTO @temp (Code)
VALUES (9),(8),(7),(6),(5),(10),(31)

SELECT STUFF((
    SELECT ', "' + CAST(Code AS VARCHAR(10)) + '"'
    FROM @temp
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '[') + ']'

输出:

["9", "8", "7", "6", "5", "10", "31"]

1
投票

这是您的询问:

DECLARE @var varchar(8000)
SET @var = '['
SELECT @var = @var + '"' + convert(varchar(100),Code) + '",' FROM Table1
SET @var = SUBSTRING(@var,0,LEN(@var)) + ']'

SELECT @var

SUBSTRING(@var,0,LEN(@var))
删除字符串末尾不必要的逗号


1
投票
try this
DECLARE @Str VARCHAR(MAX)
SELECT  @Str = COALESCE(@Str + ',', '') + '"'+CAST(Code AS VARCHAR(50))+'"'
FROM    Table1


SELECT  '['+@Str+']'

0
投票

试试这个

declare @formattdstring varchar(100)
set @formattdstring=''
select @formattdstring=@formattdstring+'"'+ Code +'",' from Table1
select '['+@formattdstring+']' as formattedstring

干杯!!!


0
投票
DECLARE @ClntIDs VARCHAR(MAX) = 'Alice,Bob,Carol , Dan,Erin,Frank,Eve';
SELECT  value FROM  STRING_SPLIT(@ClntIDs, ',');
DECLARE @Quoted VARCHAR(MAX) = '';

SELECT  @Quoted = CONCAT (@Quoted, '''', TRIM (value), ''', ') FROM    STRING_SPLIT(@ClntIDs, ',');

-- To remove the last comma
SET @Quoted = LEFT(@Quoted, LEN (@Quoted) - 1);

SELECT  @Quoted;
© www.soinside.com 2019 - 2024. All rights reserved.