一个简单的sql代码请求

时间:2015-07-21 03:25:20

标签: sql sql-server join sql-like

我需要一个简单的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

3 个答案:

答案 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