所以我想链接来自两个不同数据库的两列。
问题是我的第一列以这种格式"1 789 987"
输出数字,而第二列以数据"0000000001789987"
输出
如何编写我的WHERE
sql forumla以将其识别为匹配项?
好吧,所以我抽出了qrys,以便为您提供更多信息。 这是不同的表。
类似Tbl2的NUM列设置为文本。即使程序中的QRY给Tbl1中的数字提供了空格,它看起来也像qry删除了它们耸肩
SELECT *
FROM "Tbl1","Tbl2"
WHERE "Tbl1"."num" = "Tbl2"."num"
AND "Tbl1"."Date" BETWEEN '2019-01-21' AND '2019-01-25'
我希望信息变得更加清晰。我是SQL和Stackoverflow的新手,以后我将尝试改善问题信息。
答案 0 :(得分:2)
好吧,要将格式1转换为格式2,您可以尝试执行以下操作:
set @format1 = "1 789 987";
set @format2 = "0000000001789987";
select LPAD(REPLACE(@format1, ' ', ''), 16, "0") as format1, @format2 as format2
输出为:
====================================
format1 | format2
====================================
0000000001789987 | 0000000001789987
这样,如果您进行测试,format1看起来就像format2。 REPLACE
删除' '
,LPAD
将用0
填充字符串,直到该字符串的长度为16
个字符长度,如format2。
因此您可以在WHERE
条件下使用它:
...WHERE LPAD(REPLACE(your_first_column, ' ', ''), 16, "0") = your_other_column
现在您也可以尝试将两个列都转换为int,因为您没有提供有关这些格式的大量信息,所以很难找到最佳解决方案!
答案 1 :(得分:1)
此演员表可能适合您:
注意:tbl1包含以下ID:1 789 987
select *
from tbl1 join tbl2 on (
cast( -- casts to integer
replace(tbl1.text_id, ' ', '') -- removes whitespaces
as int) =
tbl2.numeric_id -- join on second table
)
无论如何,请提供示例数据和可测试的示例,您所做的以及所需的结果