sql-server - 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 之后或之前有多个逗号。
解决方案
您可以使用多个REPLACE
:
SELECT col,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
col,',x,','#'),',x','~'),'x,','^'),',',''),'~',',x'),'^','x,'),'#',',x,')
FROM tab
推荐阅读
- go - gorilla/mux 中的 Context.WithTimeout() 和 os.exit
- ruby-on-rails-4 - 将 rails 4 升级到 rails 6 - 直接还是逐步升级?
- python - 如何在 shell 脚本中转发命令行参数?
- symfony - Symfony - 多对一关系中的循环引用错误
- c# - CREATE UNIQUE INDEX 语句因发现重复键而终止 EF
- python - 评估没有运算顺序的数学问题(Python)
- jsp - WEB-INF 中的 JSP 文件出现错误 404,但没有任何消息
- regex - linux grep -oP 如何仅打印模式
- pandas - 与grouby一起旋转?
- r - 通过在 R 中抽 5 张牌来模拟获得四种同类(具有相同符号的四张牌:7、8、9、10、J、Q、K 或 A)的概率