我想在两张桌子上做一个JOIN.每个表包含来自不同数据源的UPC varchar2(20).
使这个JOIN有点困难的原因是UPC的值可以在大小上变化,有时可以用前导零填充,有时不填充.所有都包含一个尾随校验位.
例如:
Table 1 Table 2
UPC "00000123456789" "123456789"
"234567890" "234567890"
"00000003456789" "00000003456789"
"3456799" "00000003456799"
Run Code Online (Sandbox Code Playgroud)
我的想法是将每个转换为长,然后进行比较.或者我可以追加前导零.或者包含一个.
使用SQL进行连接的最佳方法是什么?
你可以试试这个:
select * from
table1 inner join table2
on (CAST(CAST(table1.UPC AS BIGINT) AS VARCHAR))
=(CAST(CAST(table2.UPC AS BIGINT) AS VARCHAR))
Run Code Online (Sandbox Code Playgroud)
要么
select * from
table1 inner join table2
on (RIGHT(table1.UPC,(LEN(table1.UPC) - PATINDEX('%[^0]%',table1.UPC)) + 1))
=(RIGHT(table2.UPC,(LEN(table2.UPC) - PATINDEX('%[^0]%',table2.UPC)) + 1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |