我有一个简单的SQL查询,如下所示
SELECT REPLACE('TEST ABC XYZ NO JJJG', 'DEF', 'YES')
这将返回与旧字符串相同的字符串。我想在这里'测试ABC XYZ NO JJJG是'出来。如果文本存在,则应替换文本,否则应将其附加在字符串的末尾。
答案 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