【问题标题】:Comparing two character values in a Coldfusion cfquery比较 Coldfusion cfquery 中的两个字符值
【发布时间】:2015-01-08 14:23:40
【问题描述】:

我有一个包含VARCHAR 值的数据库字段,例如

XY23(CX Web)

我正在写一个查询,比如

SELECT qPdfs.filename, qPdfs.code, qObjects.id
FROM qPdfs, qObjects
WHERE qPdfs.code = qObjects.code

或者喜欢

SELECT qPdfs.filename, qPdfs.code, qObjects.id
FROM qPdfs, qObjects
WHERE <cfqueryparam value="#qObjects.code#" cfsqltype="CF_SQL_VARCHAR"> = <cfqueryparam value="#qPdfs.code#" cfsqltype="CF_SQL_VARCHAR">

但我收到一条错误消息,例如

XY23(CX Web) must be interpretable as a valid number in the current locale.

有什么帮助吗?

谢谢

【问题讨论】:

  • 所以你是说这两个不同的表都有一个名为“code”的列,它是一个 CARCHAR 类型?什么是 CARACHAR?你的意思是 VARCHAR 可能吗?另外 - 您是否尝试过加入 2 个查询(实际上是使用 JOIN 语法)?
  • 是的,它实际上是 VARCHAR。

标签: coldfusion coldfusion-9


【解决方案1】:

两个数据库列的类型都是varchar吗?如果是这样,则 QoQ 可能正在根据列的内容应用一些隐式转换。如果某些代码都是数字,则 QoQ 可能会在执行比较之前尝试将它们转换为内部数字。因此错误。 cfqueryparam 在这里无济于事,因为它只能用于文字,不能用于查询列。如果直接相等比较(即ColName = ColName)导致该错误,请尝试强制转换:

WHERE CAST(qPdfs.code AS VARCHAR) = CAST(qObjects.code AS VARCHAR)

注意:QoQ 字符串比较区分大小写,因此您可能需要先将列转换为大写/小写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2013-12-10
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多