【问题标题】:vb6 - NUMERIC and microsoft ole db provider for sql servervb6 - 用于 sql server 的 NUMERIC 和 microsoft ole db 提供程序
【发布时间】:2011-09-27 19:32:32
【问题描述】:

首先抱歉英语不好。

我想进行以下查询:“select top 1 NumeroLote from tblLote where convert(numeric(12), Documento)=28405”

“Documento”的数据存储在 varchar 字段中,有时记录为“002008”或“2008”...这就是我尝试使用数字的原因。

它在 sql server 2008 上工作,但是当我使用 Provider="sqloledb" 和 Microsoft ActiveX Data Objects 2.0 库从 vb6 使用它时,我收到以下错误:“numeric is not a known function name. Microsoft Ole Db provider for sql 服务器”。

你知道一些替代方案吗,我只能想到使用“like”。

编辑:Documento 可能是 varchar(12)

答案:大整数

非常感谢您的宝贵时间!

【问题讨论】:

  • 试试CONVERT(DECIMAL(12, 0), DocumentNo) = ...
  • 得到相同的消息十进制不是可识别的函数名称。 :(
  • 这一切都引出了“为什么数据库列输入不正确?”的问题......

标签: sql-server vb6 numeric


【解决方案1】:

“Documento”的数据存储在 varchar 字段中,有时记录为“002008”或“2008”...这就是我尝试使用数字的原因。

数字总是整数吗?如果是这样,请尝试使用它:

CONVERT(INT, Documento)

编辑:使用 bigint 避免溢出问题:

CONVERT(BIGINT, Documento)

【讨论】:

  • 它的 varchar(12) 所以它不适用于整数。我已经更新了这个问题。 :(
  • 你的意思是,它不起作用?因为价值观不匹配?还是整数不够大?
  • 整数不够大:varchar 值 '03400110858' 的转换溢出了一个 int 列,超过了最大整数值。它关闭是因为 INT 存在...
猜你喜欢
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多