我有一张桌子EmployeeLeave
CREATE TABLE EmployeeLeave (
EmployeeId INT,
LeaveType VARCHAR()
);
LeaveType可以包含数字和字符串。
CREATE TABLE MST_LeaveReason (
ReasonId INT,
Reason VARCHAR()
);
SELECT * FROM EmployeeLeave EL
LEFT JOIN MST_LeaveReason LR ON LR.ReasonId = EL.LeaveType
以上查询将不起作用,因为LeaveType并不总是数字。我希望仅当LeaveType为数字时,此联接才能工作。我该如何实施。请帮忙。
谢谢。
答案 0 :(得分:3)
使用try_convert()
:
SELECT *
FROM EmployeeLeave EL LEFT JOIN
MST_LeaveReason LR
ON LR.ReasonId = TRY_CONVERT(INT, EL.LeaveType);
您也可以从另一个方向执行此操作:
SELECT *
FROM EmployeeLeave EL LEFT JOIN
MST_LeaveReason LR
ON CONVERT(VARCHAR(255), LR.ReasonId) = EL.LeaveType;
然后,修复数据模型。 JOIN
键应为相同类型。这样的转换会对性能产生重大影响。