数据应根据查找表进行替换

时间:2012-12-12 05:50:16

标签: mysql sql

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

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

我一直在尝试检测Table1列ADRES`house#240 st。 #76 Cantt。 road Chicago包含查找表中错误列中存在的任何值,应该被右列值替换。

表1:

Username | Adres
Jhon     | house#  240 st. #  76 Cantt. road Chicago 

查找表:

WRONG   |    Right
house#       HNO

例如:house# 240 st. # 76 Cantt. road Chicago(house#错误,因此应该被HNO取代)并更新Table 1并将地址设置为

Jhon     | HNO  240 st. #  76 Cantt. road Chicago

1 个答案:

答案 0 :(得分:1)

如果您想更新字段,

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

但是如果你只想投射替换的值,

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