Tsql 使用左连接命令SQL Server 2008 r2查询时如何替换列值

Tsql 使用左连接命令SQL Server 2008 r2查询时如何替换列值,tsql,replace,sql-server-2008-r2,left-join,Tsql,Replace,Sql Server 2008 R2,Left Join,好吧,让我举例说明我的问题 我们有一个包含 Id Name Number 现在举个例子 1 House 4 2 Hospital 3 3 Airport 'null' 4 Station 2 当按上述方式进行查询时,包含列的“null”值给出了错误。所以我想修改上面的查询,使其将name2返回为null,并且不会给出该行的错误 因此,我预期的结果应该是: 1 House Station 2 Hospital Airport 3 Airport null 4 Station Hospital

好吧,让我举例说明我的问题

我们有一个包含

Id
Name
Number
现在举个例子

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

当按上述方式进行查询时,包含列的“null”值给出了错误。所以我想修改上面的查询,使其将name2返回为null,并且不会给出该行的错误

因此,我预期的结果应该是:

1 House Station
2 Hospital Airport
3 Airport null
4 Station Hospital
这里的null作为字符串

我得到的当前错误

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


谢谢

您应该修复数据库设计。同时,使用以下选项可获得预期结果:

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

您应该修复数据库设计。同时,使用以下选项可获得预期结果:

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

为什么要将数字存储为
varchar
null
作为包含单词
null
的字符串?这是因为设计不好,但现在无法更改。需要一些帮助:对我来说,现在进行设计似乎是最好的选择,但无论如何,
null
是该列中唯一的非数字值吗?为什么要将数字存储为
varchar
null
作为包含单词
null
的字符串?因为设计不好,但现在无法更改。需要一些帮助:现在对我来说,对设计进行数据挖掘似乎是最好的选择,但无论如何,
null
是该列中唯一的非数字值吗?@MartinSmith。不间断电源!谢谢“现在是你吗?”马丁史密斯。不间断电源!谢谢现在给你?