我如何更改 ;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, ',', ' '))), ',', ''',''') + ''''