sql-server - 我如何改变;A;B;C; 到('A','B','C')?
问题描述
我需要将用分号分隔的值列表(包括前面)转换为带有引号和逗号的常规值列表。字段中可能只有一个值,也可能有多个值。
我想过更换 ; 有逗号,但是后面还是有逗号,还需要加单引号。
REPLACE(S_List, ';', ',')
我想要;a;b;c; 成为 'a','b','c' 或至少 a,b,c 但我不知道如何处理开头和结尾的分号
解决方案
declare @slist varchar(100) = ';a;b;c;'
select substring(replace(@slist, ';', ''','''), 3, len(replace(@slist, ';', ''',''')) - 4)
请参阅演示。
结果:
'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
请参阅演示。
推荐阅读
- php - PHP 警告:在第 71 行更新到 php 7.3.X 后出现非法字符串偏移
- html - 将 div 调整为没有“宽度:适合内容”的内容
- javascript - 在循环中更新属性值 - Reactjs
- excel - Excel VBA更改文本框中的文本
- python - Python Pandas - 从一张纸复制数据并附加到另一张纸的末尾
- angular - 如何使用 Jasmine 测试 MatSort
- python - 在情节中迭代数字以创建动画
- g++ - 使用 pthread_create() 创建线程在我的 linux 上不起作用
- r - 在 summarise_at 中保留排除的变量
- python - 如何将 QWidget 参数传递给类