我在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
的目的是什么?
答案 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