0

列に次のような文字列値があります。

|333|,|331|

次のようにバランスの取れた文字列置換を実行したい:

xxTM_333_TMxx,xxTM_331_TMxx

REPLACEおよび関数を使用してこれを実行しようとしましたCONCATが、目的の出力が得られませんでした。

例えば:

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

|これにより、それぞれの場合にシンボルの 1 つが正しく置き換えられますが、一致した (バランスの取れた) 対応するシンボルは置き換えられません。

MySQL でこの結果を得るにはどうすればよいですか?

4

1 に答える 1

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

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

ここでフィドルを参照してください。

于 2013-09-10T14:13:55.497 に答える