将列转换为要在连接中使用的相同数据类型

时间:2016-10-04 00:36:41

标签: sql-server

我正在尝试连接两个表,但正在使用的列是两种不同的数据类型,表#1 = float和表#2 = varchar(8)。

{{1}}

在这些示例中,我仅获取第445566行的数据

我如何演员/转换???列使所有匹配的行返回数据

3 个答案:

答案 0 :(得分:1)

使用

{{helptext[101][0].menuItem}}

答案 1 :(得分:1)

Declare @Table1 table (SomeField1 float)
Insert Into @Table1 values (5585),(985),(445566),(null)

Declare @Table2 table (SomeField2 varchar(8))
Insert Into @Table2  values ('005585'),('000985'),('445566')


Select A.SomeField1
      ,B.SomeField2
 From @Table1 A
 Join @Table2 B 
   on cast(A.SomeField1 as int) = cast(B.SomeField2 as int)

返回

SomeField1  SomeField2
5585        005585
985         000985
445566      445566

答案 2 :(得分:0)

这取决于您的确切加入条件。通常,从数字类型转换为varchar比反之亦然更容易和更安全,因此您可以执行以下操作:

SELECT stuff FROM table1
INNER JOIN table2 ON Convert(varchar(8),table1.field) = table2.field