SQL Server 认为我在使用连字符时尝试将 varchar 转换为 int

Posted

技术标签:

【中文标题】SQL Server 认为我在使用连字符时尝试将 varchar 转换为 int【英文标题】:SQL Server thinks i'm trying to convert varchar to int when using a hypen 【发布时间】:2016-03-07 20:25:25 【问题描述】:

当我运行这条 SQL 语句时:

SELECT commentor, comment, cdate, ddate 
FROM delivery_comments
WHERE Jobno = '93388-01' and ddate = '2016-03-11'
ORDER BY cdate

我收到此错误:

消息 245,第 16 级,状态 1,第 1 行 将 varchar 值“93388-01”转换为数据类型 int 时转换失败。

我不想将其转换为 int。我希望它保留varchar。我该怎么做?

【问题讨论】:

delivery_cmets中的jobNo是什么数据类型?显示delivery_cmets 的表结构。我的猜测是 JobNo 是整数,因此系统正在尝试执行失败的隐式转换。 真该死。它是“整数”。这真的让我很困惑。 :P 我无法解决我猜其他地方的 JobNo 不是 int :P 所以要修复...为什么您认为工作编号可能是“93388-01”?当字段是 int.... 93388-01 的来源是什么? 【参考方案1】:

我完全同意@xQbert,你为什么要比较 varchar 的类型和 int 以及 '-' (连字符),当它确定 int 永远不会有这样的价值时......

你可以做如下比较:

Cast(Jobno As Varchar(20)) = '93388-01'

您仍然永远不会得到结果,因为您的数据中永远不存在“-”(连字符)。

【讨论】:

以上是关于SQL Server 认为我在使用连字符时尝试将 varchar 转换为 int的主要内容,如果未能解决你的问题,请参考以下文章

将日文字符插入 SQL Server 数据库

尝试将字符串插入 SQL Server 时出现问题

将 XML 文件导入 SQL Server 时唯一标识符转换失败

如何使用远程桌面连接到 SQL Server

用户将在 SQL Server 中截断字符串或​​二进制数据

将 Unicode 从 R 写入 SQL Server