我有两个表,一个带有字符串,需要检查某些需要替换的字符串。第二个表包含两列,一列包含要搜索的字符串,另一列包含要替换的字符串 - 简短的转换表:
|Name |Age| |Short|Long |
--------------- ------------
|Mr. Smith|23 | |Mr. |Mister|
|Ms. Anna |78 | |Ms. |Misses|
|Jack Jr. |12 | |Jr. |Junior|
|Mister A |23 | --------------
|John |41 |
---------------
我认为我必须进行交叉连接并选择不同的值。
但是现在我有两行,先生和先生,我如何只选择" Mister":
[I need this table] [but this is the result]
|Name |Age| |Name |Age|
------------------- -------------------
|Mister Smith |23 | |Mr. Smith |23 |
|Misses Anna |78 | |Mister Smith |23 |
|Jack Junior |12 | |Ms. Anna |78 |
|Mister A |23 | |Misses Anna |78 |
|John |41 | |Jack Jr. |12 |
------------------- |Jack Junior |12 |
|Mister A |23 |
|John |41 |
-------------------
我不能做"除了"因为该表还包含行,不需要翻译。
提前致谢。
答案 0 :(得分:1)
使用以下sql查询:
select ifnull(replace(t1.name,t2.short_name,t2.long_name),t1.name) as name,
t1.age
from
t1
left join t2
on t2.short_name=if(instr(t1.name,t2.short_name)>0,t2.short_name,t1.name)
注意:使用UPPER
或LOWER
功能进行大小写不匹配。使用TRIM
函数进行空间发布。