SQL Server:1 ++ 2是什么意思?

usr*_*usr 12 t-sql sql-server syntax

SQL Server的T-SQL语法似乎允许连续多个加号:

SELECT 1 + 2 --3
SELECT 1 ++ 2 --3
SELECT 1 ++++++ 2 --3
SELECT 1 + '2' --3
SELECT 1 ++ '2' --3
SELECT '1' + '2' --'12'
SELECT '1' ++ '2' --'12'
Run Code Online (Sandbox Code Playgroud)

多个加号似乎表现得像一个加号.为什么存在"多重运算符" ++?它有什么作用?

Mar*_*ers 17

第一个加号被解释为加法运算符.每个剩余的加号都被解释为一元加号运算符:

1 ++ 2   means   1 + (+2)
1 +++ 2  means   1 + (+(+2))
Run Code Online (Sandbox Code Playgroud)

在编程语言中使用这个一元加运算符是很常见的,尽管它在SQL中很少使用,因为它实际上没有做任何事情.

尽管一元加号可以出现在任何数值表达式之前,但它不会对表达式返回的值执行任何操作.具体来说,它不会返回否定表达式的正值.

SQL-92标准中提到了一元加运算符.

除了通常的算术运算符,plus,minus,times,divide,unary plus和unary minus之外,还有以下函数返回数字:...

虽然一元加号并不是那么有用,但它有一个更有用的伴侣:一元减去.它也被称为负算子.

SELECT -(expression), ...
--     ^ unary minus
Run Code Online (Sandbox Code Playgroud)