以下是我的sqlfiddle用于测试和构建查询:

http://sqlfiddle.com/#!2/975c6/1

我一直在尝试做的是检测Table1列ADRES`house#240 st。 #76 Cantt。 road Chicago包含在查找表的错误列中存在的所有值,应将其替换为正确的列值。

表格1:

用户名|阿德雷斯
Jhon |房子#240 #76 Cantt。芝加哥路


查找表:

错误|对
房子#HNO


例如:house# 240 st. # 76 Cantt. road Chicago(房屋号错误,因此应将其替换为HNO)并更新Table 1并将地址设置为

Jhon | HNO 240圣#76 Cantt。芝加哥路

最佳答案

如果您想更新字段,

 UPDATE table1 a CROSS JOIN lookup b
 SET    a.ADRES = REPLACE(a.ADRES, b.`WRONG`, b.`RIGHT`)
 WHERE  a.ADRES LIKE CONCAT('%', b.`WRONG`, '%')



SQLFiddle Demo


但是如果您只想投影替换后的值,

 SELECT  a.Username, REPLACE(a.ADRES, b.`WRONG`, b.`RIGHT`)
 FROM    table1 a CROSS JOIN lookup b
 WHERE   a.ADRES LIKE CONCAT('%', b.`WRONG`, '%')



SQLFiddle Demo

关于mysql - 数据应按照查找表进行替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13833622/

10-10 09:18