SQL WHERE子句中的加号是什么(WHERE + userName = SYSTEM_USER)

时间:2014-04-28 23:44:02

标签: sql-server

我一直试图在where子句中找到加号的含义。有人对这个有任何想法吗?被卡住了一下。查询本身非常简单,与加号类似,或没有加号。除非是因为某种原因,否则我希望将其删除。

SELECT userID from tblUser WHERE + userName = SYSTEM_USER

补充说明:这是在SQL Server 2008而不是Oracle中,它也不是来自Oracle迁移...如下所述,Oracle有一个较旧的连接符号,它使用+通常后缀为某些条件。 / p>

2 个答案:

答案 0 :(得分:6)

一元+运算符只是一个无操作。这个运算符的文档中解释了这一点,here

  

虽然一元加号可以出现在任何数字表达式之前,但它   对表达式返回的值不执行任何操作。   具体来说,它不会返回负值的正值   表达。要返回否定表达式的正值,请使用   ABS功能。

我实际上相信这句话有点误导。我认为unary plus运算符会将字符串参数转换为数字。当应用于填充数字的常量字符串时,这实际上可以作为鼓励编译器在数字字段上使用索引的一种方式。

答案 1 :(得分:0)

看起来where子句中的plus运算符用于左外连接或右外连接。

你不需要它,但你可以阅读它们here

您的查询以相同方式工作的原因是因为数据仅来自单个表。加入是多余的。

快速搜索还会引导我this answer,建议不要使用+方法进行连接。

<强>更新

由于您使用的是Microsoft SQL Server 2008,这是我最好的猜测:

&#39; +&#39;运算符用于字符串连接。