Can MySQL replace multiple characters?

前端 未结 6 2085
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-27 05:42

I\'m trying to replace a bunch of characters in a MySQL field. I know the REPLACE function but that only replaces one string at a time. I can\'t see any appropriate function

6条回答
  •  一个人的身影
    2020-11-27 06:10

    You can chain REPLACE functions:

    select replace(replace('hello world','world','earth'),'hello','hi')
    

    This will print hi earth.

    You can even use subqueries to replace multiple strings!

    select replace(london_english,'hello','hi') as warwickshire_english
    from (
        select replace('hello world','world','earth') as london_english
    ) sub
    

    Or use a JOIN to replace them:

    select group_concat(newword separator ' ')
    from (
        select 'hello' as oldword
        union all
        select 'world'
    ) orig
    inner join (
        select 'hello' as oldword, 'hi' as newword
        union all
        select 'world', 'earth'
    ) trans on orig.oldword = trans.oldword
    

    I'll leave translation using common table expressions as an exercise for the reader ;)

提交回复
热议问题