【问题标题】:SQL Inner Join Help Needed需要 SQL 内部联接帮助
【发布时间】:2016-04-05 19:44:56
【问题描述】:

我有以下查询:

SELECT 
[dbo].[history].histtable,
[dbo].[history].code,
[dbo].[history].Date,
dbo.Activities.Number,
dbo.table1.Itemnumber

FROM [dbo].[History]
INNER JOIN 
[dbo].[Activities]
ON
[dbo].[History].Flags=[dbo].[Activities].Objects

INNER JOIN dbo.table1 
On
CONVERT (Int, dbo.table1.Itemnumber) = CONVERT (INT, dbo.history.Date)
OR CONVERT (Int, dbo.tablenumber.Itemnumber) = dbo.Activities.Alltransactions

ORDER BY 3 DESC

我不断收到以下错误:

将 varchar 值 Itemnumber 转换为数据类型 int 时转换失败。

我能做些什么来解决这个问题?

【问题讨论】:

  • 我会在 ItemNumber 列中查找实际上无法转换为 int 的值。如果您希望值是 int,请将它们保存为 int!
  • 希望我的回答对您有所帮助。如果是,请标记为答案?

标签: sql integer inner-join varchar


【解决方案1】:

您可以对要加入的每个表进行单独选择,并使用ISNUMERIC 仅提取非数字行,以便您更好地识别问题并查看哪些值不是数字

类似

select Itemnumber
from dbo.table1 
where IsNumeric(Itemnumber) = 0

或者你加入,比如

INNER JOIN dbo.table1 
On IsNumeric(dbo.table1.Itemnumber) = 1 
and 
(
    CONVERT (Int, dbo.table1.Itemnumber) = CONVERT (INT, dbo.history.Date)
OR
    CONVERT (Int, dbo.tablenumber.Itemnumber) = dbo.Activities.Alltransactions
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2015-10-01
    相关资源
    最近更新 更多