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'
多个加号似乎表现得就像单个加号一样。为什么会存在“多个加号操作符” ++
?它是做什么用的?
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'
多个加号似乎表现得就像单个加号一样。为什么会存在“多个加号操作符” ++
?它是做什么用的?
第一个加号被解释为加法运算符。其余的加号都被解释为一元加号运算符:
1 ++ 2 means 1 + (+2)
1 +++ 2 means 1 + (+(+2))
在编程语言中,经常会出现这个一元加号运算符,虽然在 SQL 中很少使用,因为它实际上并没有做任何事情。
尽管一元加号可以出现在任何数字表达式之前,但它对从表达式返回的值不执行任何操作。具体来说,它不会返回负表达式的正值。
一元加号运算符在 SQL-92 标准中提到。
除了通常的算术运算符外(加,减,乘,除),还有以下返回数字的函数:一元加号和一元减号...
虽然一元加号并不是很有用,但它有一个更有用的伴侣:一元减号。它也被称为负数运算符。
SELECT -(expression), ...
-- ^ unary minus
SELECT 1 ++ 2
的意思是1加(+2),也就是3。
其他的语句同理,比如 1+(+(+2))
等等。
SELECT '1' + '2' --'12'
表示连接两个字符串,即字符串 '1' 和字符串 '2',结果为 '12'。
SELECT + 'A string'
的问题(https://connect.microsoft.com/SQLServer/feedback/details/718176/concatenation-operator-not-working-properly)。 - Martin Smith