0

好吧,让我用例子来解释我的问题

我们有一个表,其中包含

Id
Name
Number

现在的例子

1 House 4
2 Hospital 3
3 Airport 'null'
4 Station 2

 select t1.id, 
       t1.name,
       t2.name as name2
from your_table t1
left join your_table t2 on t1.number = t2.id

好的,如上所述查询时,包含列的“空”值给出错误。所以我想修改上面的查询,使其返回 name2 为 null 并且不会为该行提供错误。

所以我期望的结果应该是:

1 House Station
2 Hospital Airport
3 Airport null
4 Station Hospital

这里的 null 是字符串。

我得到的当前错误

消息 245,级别 16,状态 1,第 5
行将 varchar 值“null”转换为数据类型 smallint 时转换失败。

谢谢你

4

1 回答 1

3

您应该修复您的数据库设计。同时,使用NULLIF来获得您的预期结果:

select t1.id, 
       t1.name,
       t2.name as name2
from your_table t1
left join your_table t2 on NULLIF( t1.number, 'NULL' ) = t2.id
于 2012-10-07T19:12:41.447 回答