将Char转换为Int,反之亦然

我无法在不删除输出值的情况下进行正确的转换。

我想联接两个表,但是一个表的主键是一个char(4),另一个表的主键则是一个INT

这是我到目前为止所做的:

select A.ID,B.ID from 
TableA A
 left join tableB B on
 cast(a.ID as varchar(4) = B.ID

我意识到这不会带来个位数的值。

Table A values: 0,1,2,3,41
Table B values: 0,41

原始查询的输出仅给我41,而忽略了其他4个值。

我需要能够获取其他4个值

关于如何实现期望的表现的任何想法吗?

sb3006 回答:将Char转换为Int,反之亦然

我刚刚使用临时表对此进行了测试,并且一切都按预期进行(我确实添加了结束语)

create table #tableA(id int)
insert #tablea (id) values (0),(1),(2),(3),(41)
create table #tableb(id char(4))
insert #tableb (id) values (0),(41)

select A.ID,B.ID from 
#TableA A
 left join #tableB B on
 cast(a.ID as varchar(4)) = B.ID
,

可以转换为字符串:

select A.ID,B.ID
from  TableA A left join
      tableB B
      on cast(a.ID as varchar(4)) = B.ID;

正如我从痛苦的经验中学到的,这不能处理前导零或零小数。因此,0.00000不同。但是,除非填充零,否则这对于个位数应该没问题。

对于数字比较,请朝另一个方向

select A.ID,B.ID
from  TableA A left join
      tableB B
      on a.ID = try_convert(int,B.ID);

当然,真正的解决方案是修复表,使列具有相同的数据类型。

本文链接:https://www.f2er.com/3163582.html

大家都在问