基于MySQL中存在的价值的CONCAT或REPLACE

时间:2018-01-29 05:22:35

标签: mysql replace concat

我有一个简单的SQL查询,如下所示

SELECT REPLACE('TEST ABC XYZ NO JJJG', 'DEF', 'YES')

这将返回与旧字符串相同的字符串。我想在这里'测试ABC XYZ NO JJJG是'出来。如果文本存在,则应替换文本,否则应将其附加在字符串的末尾。

1 个答案:

答案 0 :(得分:0)

假设column包含'TEST ABC XYZ NO JJJG',那么您可以编写如下查询:

SELECT
    IF(
        REPLACE(column, 'DEF', 'YES') = column, -- If the replacement yielded no changes
        CONCAT(column, ' ', 'YES'), -- Simply append the text
        REPLACE(column, 'DEF', 'YES') -- Otherwise returned the replaced result
    ) AS replaced_column

编辑:发表您的评论(只需使用REPLACE()更改INSTR()):

SELECT
    IF(
        INSTR(column, 'DEF') = column, -- If the column contains the text
        REPLACE(column, 'DEF', 'YES'), -- Replace the result
        CONCAT(column, ' ', 'YES') -- Otherwise append the text
    ) AS replaced_column