我正在尝试在sql server 2008上加入两个表。
select *
from TABLE1 a
left join TABLE2 b
on a.cont_id = b.cont_id
但是,它无法连接任何数据。
a.cont_id 属于 nvarchar (255)类型, b.cont_id 属于 varchar (80) 。以任何方式使用CAST都没有帮助。
由于 a.cont_id 仅包含数值数据,因此我首先使用了float和integer类型以及应用了cast函数,但这并没有解决任何问题。
我使用以下查询检查了他们的varbinary代码
select cont_id, CAST(cont_id AS varbinary) AS BinaryCode
from Table1
where cont_id = '53126124'
select cont_id, CAST(cont_id AS varbinary) AS BinaryCode
from Table2
where cont_id = '53126124'
我得到了这两个结果
cont_id BinaryCode
53126124 0x4189551F60000000
cont_id BinaryCode
53126124 0x3533313236313234
还有一个信息 - 表1是从邻居国家(捷克共和国)创建的excel文档导入的。
对于源表,这是一个例子,如果有帮助的话。
cont_id C1 C2 C3
53126124 3 31 510
175553321 5 16 510
并且
dt cont_id D1 D2
201610 53126124 0 0
201610 175553321 41 520
你知道如何处理这个问题吗?
答案 0 :(得分:0)
好的,我想我已经明白了:
此
*
结果为SELECT CAST(CAST(53126124 AS FLOAT) AS VARBINARY)
,而此
0x4189551F60000000
结果为SELECT CAST('53126124' AS varbinary)
,而此
0x3533313236313234
返回SELECT CAST(53126124 AS varbinary)
。
第一个值是0x032AA3EC
的varbinary表示,FLOAT
的第二个和VARCHAR
的最后一个。
显然第一个不是INT
!
浮点类型往往不精确,可能会有一个很小的值,如VARCHAR
或1,0000000001
,它被视为0.999999998
,但不相等。
你可以试试这个:
1