【发布时间】:2018-01-29 05:22:35
【问题描述】:
我有一个简单的 sql 查询,如下所示
SELECT REPLACE('TEST ABC XYZ NO JJJG', 'DEF', 'YES')
这将返回与旧字符串相同的字符串。我想在这里输出“TEST ABC XYZ NO JJJG YES”。如果文本存在,它应该替换文本,否则它应该附加在字符串的末尾。
【问题讨论】:
我有一个简单的 sql 查询,如下所示
SELECT REPLACE('TEST ABC XYZ NO JJJG', 'DEF', 'YES')
这将返回与旧字符串相同的字符串。我想在这里输出“TEST ABC XYZ NO JJJG YES”。如果文本存在,它应该替换文本,否则它应该附加在字符串的末尾。
【问题讨论】:
假设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
【讨论】: