二进制类型上的+运算符



当"添加"二进制类型时,是将它们的值相加还是将字节连接在一起更常见?例如:

=0x12 + 0xA

这种情况更常见吗?

0x120A

或者:

0x1C

我的意思是,主要是在SQL上下文中,因为我确信在编程语言中使用时,它会在应用运算符之前将字节转换为数字。这是在SQL标准中定义的,还是在向供应商开放的实现中定义的?

这里有一个来自SQL Server的引用:字符串运算符。

这里的问题是,您看到+并认为"添加";。太傻了!(那是个笑话。(

SQL Server重载+,因此它既是加法也是字符串串联。对于二进制常数;字符串";使用串联。这在文档中。对于添加的+

是数字类别中除位数据类型之外的任何一种数据类型的任何有效表达式。

然后在+的页面上作为字符串串接:

是字符和二进制数据类型类别中任何一种数据类型的任何有效表达式,image、ntext或text数据类型除外。

因此,SQL Server决定您确实需要字符串串联。

如果你真的想添加它们,请将它们转换为数字并返回二进制:

select cast(cast(0x12 as int) + cast(0xA as int) as binary(1))

最新更新