我需要一个简单的sql代码,它可以执行以下操作:
在表1中,我得到了代号专栏及其varchar(128)
。在表2中,我也得到了列代号,但这些列中的内容之间略有不同。
在table1
中,代号是:item_pinnacle_w_clothes_10_aa_c_crusader
在table2
中,代号是:ITEM_10_CRUSADER_CH_W_CLOTHES
是否有任何可能的方法来编写如下的查询:
from table1 tbl
join table2 tbl2
on tbl.codename like a part from tbl2.codename
答案 0 :(得分:0)
列名无关紧要,只需确保列具有相同的数据类型。
从SQLFiddle,您可以看到上次查询失败,因为我试图在两种不同的数据类型之间进行连接。所以,只要数据类型相同。你可以加入。
<强> SQLFiddle Demo 强>
所以答案是是。
答案 1 :(得分:0)
使用子字符串函数和Join Condition中的Use Like运算符获取要匹配的文本部分。
答案 2 :(得分:0)
在您的情况下,代码似乎很难并且容易发生简单的LIKE
匹配。
为了安全起见,为table1和table2之间的所有代码创建一个映射表,仔细查看匹配和调试。然后将table1和table2与映射表
连接起来假设代码是1对1映射。建议的映射表表格模式:
Table1CodeName varchar(128) primary key,
Table2CodeName varchar(128) not null
加入条件
SELECT
t1.*,
t2.*
FROM
Table1 t1
INNER JOIN Mapping map ON t1.CodeName = map.Table1CodeName
INNER JOIN Table2 t2 ON t2.CodeName = map.Table2CodeName