在MySQL中使用replace和concat

时间:2013-09-10 13:33:05

标签: mysql

我在列中有以下字符串值:

|333|,|331|

我想按如下方式执行平衡字符串替换:

xxTM_333_TMxx,xxTM_331_TMxx

我尝试使用REPLACECONCAT函数执行此操作但未获得所需的输出。

例如:

SELECT REPLACE('|333|,|331|','|','xxTM');

这会在每种情况下正确替换其中一个|符号,但不会替换其匹配(平衡)符号。

如何在MySQL中实现此结果?

1 个答案:

答案 0 :(得分:3)

SET @st := '|333|,|331|';

SELECT
  CASE WHEN @st LIKE '|%|' THEN
    CONCAT(
      'xxTM',
      REPLACE(REPLACE(@st, '|,|', '_TMxx,xxTM_'), '|', '_'),
      'TMxx')
  END rep_st;

请参阅小提琴here