Sql 联接表查询失败,错误代码为-转换varchar值时转换失败';XYZ';到数据类型tinyint

Sql 联接表查询失败,错误代码为-转换varchar值时转换失败';XYZ';到数据类型tinyint,sql,sql-server,tsql,left-join,Sql,Sql Server,Tsql,Left Join,我在尝试连接两个表时遇到了一个问题。我已检查了两个表的数据类型是否相同,但仍显示了与数据类型转换相关的错误。错误详细信息如下: Msg 245,16级,状态1,第1行 将varchar值“A00.0”转换为数据类型tinyint时,转换失败 我使用的连接查询如下所示: SELECT table1.column1,table1.column2,table2.column1 FROM table1 LEFT JOIN table2 ON table1.matching_column = table

我在尝试连接两个表时遇到了一个问题。我已检查了两个表的数据类型是否相同,但仍显示了与数据类型转换相关的错误。错误详细信息如下:

Msg 245,16级,状态1,第1行 将varchar值“A00.0”转换为数据类型tinyint时,转换失败

我使用的连接查询如下所示:

SELECT table1.column1,table1.column2,table2.column1
FROM table1 
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;

有人能帮我吗?

您有两列不同的数据类型。。一个是字符串,一个是int 连接(IMPILSTALLY)将字符串转换为INT,但此操作失败

如果无法更改向相关列添加相同数据类型的数据结构。。尝试将int转换为字符串

  SELECT table1.column1,table1.column2,table2.column1
  FROM table1 
  LEFT JOIN table2
  ON table1.matching_column = cast(table2.matching_column,as varchar(32) ) ;


显然,您正在匹配两个类型不同的列。你应该修正这些类型

在这种情况下,我建议转换为数字,而不是字符串。这是因为我过去曾被前导零咬过——字符串不同,但数字不同

在SQL Server中,使用
try\u cast()


当然,这假设
table2
有字符串列。

您正在尝试连接不同数据类型的列。。。你认为这会怎样?很明显,一个是字符串,另一个是数字-不会连接。请确保
table1.matching_column=table2.matching_column
的数据类型相同。我们需要查看表定义、一些示例数据、,我觉得OP应该在设计器中更改它们的数据类型,或者更新查询以调整它们的数据结构table@Phong我同意你的观点,如果用户可以的话,最好是拥有相同类型的数据,但如果他不能,那么他可以尝试转换值是的,先生。所以OP应该给我们提供更多的细节。
  SELECT table1.column1,table1.column2,table2.column1
  FROM table1 
  LEFT JOIN table2
  ON cast(table1.matching_column,as varchar(32) ) = table2.matching_column ;
SELECT table1.column1, table1.column2, table2.column1
FROM table1 LEFT JOIN
     table2
     ON table1.matching_column = try_cast(table2.matching_column as tinyint);