对不起,如果这是一个基本问题,但我无法在Google等上找到答案。
我有两个表:table1,table2
表1具有10个字符数字字段的字段'AccountNo'(示例:1122334455)
表2具有一个" subaccno"字段,它是一个12个字符数字字段(示例:1122233445501)
您可以看到subaccno与accountno相同,但末尾的另外两个数字范围为01-99。
如果我想加入两个表并尝试这样的事情:
SELECT *
FROM TABLE1
JOIN TABLE2
ON TABLE1.ACCOUNTNO = TABLE2.SUBACCNO
WHERE STR(SUBACCNO) LIKE '1122334455%%'
作为通配符无法在数字数据上执行,我尝试将其转换为最后两个字符的通配符的字符串。但是,这一无所获。
有人能提供一些建议吗?谢谢!
如何在SUBACCNO
列上加入100:
SELECT *
FROM TABLE1
JOIN TABLE2
ON TABLE1.ACCOUNTNO = TABLE2.SUBACCNO / 100
实际上,为了安全起见,您可能需要使用ROUND()
:
SELECT *
FROM TABLE1
JOIN TABLE2
ON ROUND(TABLE1.ACCOUNTNO, 0, 1) = ROUND(TABLE2.SUBACCNO / 100, 0, 1)
您的加入无法工作..
尝试这个,这不是可害羞的..如果您不能更改设计
SELECT *
FROM TABLE1
JOIN TABLE2
ON TABLE1.ACCOUNTNO = cast(substring(TABLE2.SUBACCNO,1,10) as bigint)
您还可以添加另外计算的列,如下面的索引,以良好的性能,我建议您使用这些类型的查询
create table yourtable
(
accno bigint,
accno1 as cast(substring(accno,1,10) as bigint) persisted
)
现在您可以在列上方索引良好的性能