2016-07-05 34 views
1

我在T-SQL视图中遇到了一些我从未见过的东西,并且很好奇它的目的是什么。该视图在某些表上执行左散列连接,并使用a.ID + 0选择第一个表的ID列。我从来没有在野外看到过这个,并且在StackOverflow上找不到类似的东西。T-SQL select语句中[field] + 0的用途是什么?

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

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

select语句中ID + 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 
相关问题