0

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

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

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

表格1:

用户名 | 地址
约翰 | 房子# 240 st。#76 坎特。芝加哥路

查找表:

错误 | 对
房子#HNO

例如:house# 240 st. # 76 Cantt. road Chicago(house# 是错误的,所以它应该被 HNO 替换)并更新Table 1并将地址设置为

约翰 | 硝酸 240 st。#76 坎特。芝加哥路
4

1 回答 1

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`, '%')
于 2012-12-12T06:03:10.793 回答