TSQL字符串处理:移除含‘وسم’标签后残留末尾逗号问题
解决SQL移除特定标签后末尾残留逗号的问题
问题重现
测试数据:
--drop tags like 'وسم' drop table temp CREATE TABLE temp (tags NVARCHAR(1500)); INSERT INTO temp values(N'تفاحة, أناناس, وسم') INSERT INTO temp values(N'تفاحة, موز, برتقال, وسم, العنب')
执行以下语句后:
UPDATE temp SET temp.tags = replace(tags,N'وسم,','') WHERE tags like N'%وسم%'; UPDATE temp SET temp.tags = replace(tags,N'وسم','') WHERE tags like N'%وسم%';
得到的输出存在末尾逗号问题:
تفاحة, أناناس, تفاحة, موز, برتقال, العنب
理想输出应为:
تفاحة, أناناس تفاحة, موز, برتقال, العنب
尝试清理开头逗号的语句无效,仍存在末尾逗号问题。
解决方案
可以通过精准替换标签+清理多余标点的组合逻辑解决,同时覆盖标签在开头、中间、末尾的所有场景:
UPDATE temp SET tags = TRIM(N', ' FROM REPLACE( REPLACE( REPLACE(tags, N', وسم,', N','), -- 处理标签在中间的情况(前后都有逗号) N', وسم', N''), -- 处理标签在末尾的情况(前面有逗号) N'وسم,', N'' -- 处理标签在开头的情况(后面有逗号) ) ) WHERE tags LIKE N'%وسم%';
逻辑说明
- 先处理
وسم在字符串中间的场景:将, وسم,替换为,,避免出现连续逗号; - 再处理
وسم在末尾的场景:将, وسم直接删除,消除末尾冗余的逗号前缀; - 接着处理
وسم在开头的场景:将وسم,直接删除,消除开头冗余的逗号后缀; - 最后用
TRIM(N', ' FROM ...)清理字符串首尾可能残留的逗号和空格,确保格式整洁。
执行后即可得到符合要求的结果:
تفاحة, أناناس تفاحة, موز, برتقال, العنب
内容的提问来源于stack exchange,提问作者Mishal
相关产品推荐
相关产品推荐

