我需要将用分号分隔的值列表(包括在前面)转换为带有引号和逗号的常规值列表。字段中可能只有一个值,或者可能有很多值。
我考虑过更换;带有逗号,但随后在前后仍然有逗号,并且还需要添加单引号。
REPLACE(S_List, ';', ',')
我要; a; b; c;是'a','b','c'或至少是a,b,c,但我不知道该如何处理开始和结束分号
答案 0 :(得分:1)
declare @slist varchar(100) = ';a;b;c;'
select substring(replace(@slist, ';', ''','''), 3, len(replace(@slist, ';', ''',''')) - 4)
请参见demo。
结果:
'a','b','c'
编辑。
在您的表格中像这样使用它:
select
case when s_list like '%;%;%' then
substring(replace(s_list, ';', ''','''), 3, len(replace(s_list, ';', ''',''')) - 4)
else s_list
end
from tablename
请参见demo。
答案 1 :(得分:0)
您可以尝试:
SELECT REPLACE(LEFT(S_List,1),';','''')
SELECT REPLACE(RIGHT(S_List,1),';','''')
SELECT REPLACE(S_List,';', ''',''')
答案 2 :(得分:0)
如果您的值没有空格,则可以使用trim()
技巧:
select '''' + replace(ltrim(rtrim(replace(s_list, ',', ' '))), ',', ''',''') + ''''