Sql server 如何在SQL中连接表时将数据int转换为字符串?
此查询抛出以下错误 将varchar值“DE15DRM.LPX”转换为数据类型int时,转换失败 我应该在哪里使用Sql server 如何在SQL中连接表时将数据int转换为字符串?,sql-server,casting,ssms,Sql Server,Casting,Ssms,此查询抛出以下错误 将varchar值“DE15DRM.LPX”转换为数据类型int时,转换失败 我应该在哪里使用CAST功能?添加WHERE子句并在后面使用它 提前谢谢 根据您提供的内容(查询、错误消息),有一列INT,您尝试将其与VARCHAR(字符串)进行比较,查看您的代码 SELECT * FROM Items I INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode S.ItemCode是INT列,I
CAST
功能?添加WHERE
子句并在后面使用它
提前谢谢 根据您提供的内容(查询、错误消息),有一列
INT
,您尝试将其与VARCHAR
(字符串)进行比较,查看您的代码
SELECT *
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode
S.ItemCode
是INT
列,I.ItemCode
列已经是VARCHAR
,您再次将其强制转换为VARCHAR
,因为它具有字符串值'DE15DRM.LPX'
因此,您可以通过将INT
列强制转换为VARCHAR
SELECT *
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode
您的主要问题不在
CAST()
函数或查询中,而是在数据建模中(ItemCode
在两个表中应该是相同的数据类型)。根据您提供的内容(查询、错误消息),有一列INT
,您尝试将其与VARCHAR
(字符串)进行比较,查看您的代码
SELECT *
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode
S.ItemCode
是INT
列,I.ItemCode
列已经是VARCHAR
,您再次将其强制转换为VARCHAR
,因为它具有字符串值'DE15DRM.LPX'
因此,您可以通过将INT
列强制转换为VARCHAR
SELECT *
FROM Items I
INNER JOIN Stocks S ON CAST(I.ItemCode AS varchar(25)) = S.ItemCode
您的主要问题不在
CAST()
函数或查询中,而是在数据建模中(ItemCode
在两个表中应该是相同的数据类型)。您可能需要将Int列强制转换为VarChar。但是如果你想加入它们,为什么它们有不同的数据类型呢?这是一个已损坏的数据模型.我们不能以某种方式将数据类型int转换为string吗@dnoethWhat是这两个ItemCode列的确切数据类型?@learningsql对您也不起作用,因为您有一个类似于'DE15DRM.LPX'
的字符串,而不像'123'
@sami:将数值列转换为字符串将避免此错误(当然它仍然是一个错误的数据模型)。您可能需要将Int列转换为VarChar。但是如果你想加入它们,为什么它们有不同的数据类型呢?这是一个已损坏的数据模型.我们不能以某种方式将数据类型int转换为string吗@dnoethWhat是这两个ItemCode列的确切数据类型?@learningsql不适合您,因为您有一个类似于'DE15DRM.LPX'
的字符串,而不像'123'
@sami:将数字列转换为字符串将避免此错误(当然它仍然是一个错误的数据模型)