【发布时间】:2018-06-14 18:04:42
【问题描述】:
我收到“将 nvarchar 值“XXX”转换为数据类型 int 时出现“转换失败”错误,原因不明,我不知道如何解决。该视图实际上将正确的数据返回到存储过程,但它给了我这个错误。我被困住了。有大神指点一下吗?
SELECT d.Code, a.Agency, a.Agency_job, a.OUCode, a.JobCode, d.OraUser, c.ProfileName
FROM dbo.Agency AS a
LEFT OUTER JOIN dbo.IdM AS d ON REPLACE(STR(a.OUCode, 3), ' ', '0') = d.OrganizationUnitCode AND a.JobCode = d.JobCode
LEFT OUTER JOIN dbo.Profiles AS c ON c.JobCode = a.JobCode AND c.OUCode = a.OUCode
WHERE (d.Code IS NOT NULL)
列详细信息 -
d.Code is nvarchar(32),
d.OraUser is nvarchar(100),
d.OrganizationUnitCode is nvarchar(16),
a.Agency is int,
a.Agency_job is int,
a.OUCode is int,
a.JobCode is int,
c.ProfileName is varchar(100),
c.OUCode is int,
c.JobCode is int.
有没有人发现潜在的问题?
【问题讨论】:
-
WHERE 子句条件使得第一个 LEFT JOIN 返回常规的 INNER JOIN 结果。
-
好像 a.OUCode 包含一些非数字值。
-
您的查询中没有从字符串到整数的转换(只有整数到字符串)。您确定您发布了完整的查询或使用了正确类型的列吗?
-
@Fabio 我仔细检查了类型,它们与我写的一样。这是一个完整的查询 - 我在存储过程中使用的视图。
-
@jarlh 我检查了表格中的 a.OUCode,它不包含任何非数字值。
标签: sql sql-server tsql