首页 > 解决方案 > SQL Server - 删除字符,除非前面或后面有特定字符

问题描述

假设我有一个这样的数据集:

Data
I have 23, chickens, but no cats
I have 23, chickensx, but no cats
I have 23, chickens,x but no cats

我想删除每个逗号。除非它在 ​​x 之后或之前。所以在这种情况下,它应该变成:

Data
I have 23 chickens but no cats
I have 23 chickensx, but no cats
I have 23 chickens,x but no cats

关于如何做到这一点的任何想法/建议?我可以在一个记录中有多个逗号,也可以在 x 之后或之前有多个逗号。

标签: sql-servertsql

解决方案


您可以使用多个REPLACE

SELECT col,
 REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
   col,',x,','#'),',x','~'),'x,','^'),',',''),'~',',x'),'^','x,'),'#',',x,')
FROM tab

db<>小提琴演示


推荐阅读