我有sql语句
LEFT JOIN SeniorCitizen on FinishedTransaction.SCID = SeniorCitizen.OSCAID
SCID 有 1234 OSCAID有1234/102938
我怎样才能删除/102938 使其匹配
最佳答案
嗯,一种方法是使用LIKE
:
ON SeniorCitizen.OSCAID LIKE FinishedTransaction.SCID + '/%'
不保证性能,但这应该正确地执行 join
。
编辑:
您可以通过使用计算列然后在计算列上使用索引来高效地执行此操作。
所以:
alter table SeniorCitizen
add OSCAIDshort as ( cast(left(OSCAID, CHARINDEX('/', OSCAID) - 1) as int) );
create index idx_SeniorCitizen_OSCAIDshort on SeniorCitizen(OSCAIDshort);
(强制转换假定 SCID 列是一个整数。)
然后您可以在连接中使用它作为:
LEFT JOIN SeniorCitizen on FinishedTransaction.SCID = SeniorCitizen.OSCAIDshort
此公式可以使用计算列上的索引,因此可能是执行join
的最快方法。
关于sql - SQL中如何替换Left Join语句中的部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930181/