我有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
的最快方法。