我如何更改 ;A;B;C;到('A'、'B'、'C')?
How do I change ;A;B;C; to ('A', 'B', 'C')?
我需要将一个由分号分隔的值列表(包括前面)转换为带有引号和逗号的常规值列表。该字段中可能只有一个值,也可能有多个值。
我考虑更换;带逗号,不过后来我前后还是逗号,还需要加单引号。
REPLACE(S_List, ';', ',')
我想要;a;b;c;是 'a','b','c' 或至少 a,b,c 但我不知道如何处理开始和结束分号
与substring()
and replace()
:
declare @slist varchar(100) = ';a;b;c;'
select substring(replace(@slist, ';', ''','''), 3, len(replace(@slist, ';', ''',''')) - 4)
参见demo。
结果:
'a','b','c'
编辑.
在你的 table:
中像这样使用它
select
case when s_list like '%;%;%' then
substring(replace(s_list, ';', ''','''), 3, len(replace(s_list, ';', ''',''')) - 4)
else s_list
end
from tablename
参见demo。
你可以试试:
SELECT REPLACE(LEFT(S_List,1),';','''')
SELECT REPLACE(RIGHT(S_List,1),';','''')
SELECT REPLACE(S_List,';', ''',''')
如果您的值没有空格,您可以使用 trim()
技巧:
select '''' + replace(ltrim(rtrim(replace(s_list, ',', ' '))), ',', ''',''') + ''''
我需要将一个由分号分隔的值列表(包括前面)转换为带有引号和逗号的常规值列表。该字段中可能只有一个值,也可能有多个值。
我考虑更换;带逗号,不过后来我前后还是逗号,还需要加单引号。
REPLACE(S_List, ';', ',')
我想要;a;b;c;是 'a','b','c' 或至少 a,b,c 但我不知道如何处理开始和结束分号
与substring()
and replace()
:
declare @slist varchar(100) = ';a;b;c;'
select substring(replace(@slist, ';', ''','''), 3, len(replace(@slist, ';', ''',''')) - 4)
参见demo。
结果:
'a','b','c'
编辑.
在你的 table:
select
case when s_list like '%;%;%' then
substring(replace(s_list, ';', ''','''), 3, len(replace(s_list, ';', ''',''')) - 4)
else s_list
end
from tablename
参见demo。
你可以试试:
SELECT REPLACE(LEFT(S_List,1),';','''')
SELECT REPLACE(RIGHT(S_List,1),';','''')
SELECT REPLACE(S_List,';', ''',''')
如果您的值没有空格,您可以使用 trim()
技巧:
select '''' + replace(ltrim(rtrim(replace(s_list, ',', ' '))), ',', ''',''') + ''''