T-SQL select语句中[field] + 0的目的是什么?

时间:2016-07-05 21:21:33

标签: sql-server tsql

我在T-SQL视图中遇到了一些我以前从未见过的东西,并且好奇它的目的是什么。视图在某些表上执行左散列连接,并使用a.ID + 0选择第一个表的ID列。我之前从未见过这种情况,并且在StackOverflow上找不到类似的内容。

SELECT a.ID + 0 ID, a.FIELD1, a.FIELD2 
  FROM myDatabase.dbo.SomeTable as a LEFT HASH JOIN ...

我不得不从视图中删除+ 0语句,因为视图中的ID字段似乎可以为空,即使原始表数据源将列列为不可为空。

select语句中ID + 0的目的是什么?

1 个答案:

答案 0 :(得分:4)

尽可能将字符串转换为INT,否则会抛出错误。

考虑:

select sql_variant_property('1', 'BaseType')     -- varchar
select sql_variant_property('1'+0, 'BaseType')   -- int
select sql_variant_property('ABC'+0, 'BaseType') -- Error