我有以下查询:
SELECT A.*, B.* FROM Employee AS A
LEFT JOIN EmployeeHistory AS B ON +B.EmployeeId = CASE
WHEN DeptId=1 THEN SUBSTRING(FunctionRef,2,3)
WHEN DeptId=2 THEN SUBSTRING(FunctionRef,2,2) END
我想在+B.EmployeeId
之前理解+
,因为SQL Server没有抛出错误
您发布的SQL不是有效的T-SQL。这是因为在您将Employee
的别名定义为A
之后,您就有了ON
("A"代表Employee?What A?A代表Apple,E代表Employer。不良习惯:使用表别名,如(A、b、c(或(t1、t2、t3((。FROM
中的第一个表后面不能跟ON
,ON
用于要加入的表。
如果第一个ON
是JOIN
,则执行工作:db<gt;不停摆弄但+
所做的只是作为前导加号或级联运算符(这取决于EmployeeID
的数据类型(。SELECT +1, + '';
是完全有效的(尽管很奇怪(语法。+
基本上什么都没做。
免责声明:开头一段是基于OP发布的原始SQL,他们表示已经从工作环境中复制粘贴了该SQL
+
是一个一元加号。它类似于一元减号(-
(,但它没有任何作用。如果第二个参数是字符串,那么它是一个一元字符串连接符,再次不执行任何操作。
我不确定目的是什么。
你可以看看这个来获得一个想法:
select ++++1, + '', +'abc'
也许您忘记包含第二行JOIN table2 as B
。如果包含该行,则查询可能会变为有效。
+B.EmployeeId
的表达可以表示0+B.EmployeeId
,因此加号不会有任何影响。