我在列中有以下字符串值:
|333|,|331|
我想按如下方式执行平衡字符串替换:
xxTM_333_TMxx,xxTM_331_TMxx
我尝试使用REPLACE
和CONCAT
函数执行此操作但未获得所需的输出。
例如:
SELECT REPLACE('|333|,|331|','|','xxTM');
这会在每种情况下正确替换其中一个|
符号,但不会替换其匹配(平衡)符号。
如何在MySQL中实现此结果?
答案 0 :(得分:3)
SET @st := '|333|,|331|';
SELECT
CASE WHEN @st LIKE '|%|' THEN
CONCAT(
'xxTM',
REPLACE(REPLACE(@st, '|,|', '_TMxx,xxTM_'), '|', '_'),
'TMxx')
END rep_st;
请参阅小提琴here。