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

13

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'

多个加号似乎表现得就像单个加号一样。为什么会存在“多个加号操作符” ++?它是做什么用的?


在这里讨论了SELECT + 'A string'的问题(https://connect.microsoft.com/SQLServer/feedback/details/718176/concatenation-operator-not-working-properly)。 - Martin Smith
2个回答

18

第一个加号被解释为加法运算符。其余的加号都被解释为一元加号运算符

1 ++ 2   means   1 + (+2)
1 +++ 2  means   1 + (+(+2))

在编程语言中,经常会出现这个一元加号运算符,虽然在 SQL 中很少使用,因为它实际上并没有做任何事情。

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

一元加号运算符在 SQL-92 标准中提到。

除了通常的算术运算符外(加,减,乘,除),还有以下返回数字的函数:一元加号和一元减号...

虽然一元加号并不是很有用,但它有一个更有用的伴侣:一元减号。它也被称为负数运算符

SELECT -(expression), ...
--     ^ unary minus

似乎“Last”(最右边)的加号被解释为加法,而其他所有加号都被解释为一元运算符。“SELECT 5 - - + 1”计算结果为6。 - Khalid Amin
@KhalidAmin 不是,这将被解释为5 - (-(+1)),结果也是6。二进制加号是左结合的。 - Eloff

3

SELECT 1 ++ 2 的意思是1加(+2),也就是3。

其他的语句同理,比如 1+(+(+2)) 等等。

SELECT '1' + '2' --'12' 表示连接两个字符串,即字符串 '1' 和字符串 '2',结果为 '12'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接