我有一个数据库字段,其中包含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.

有什么帮助吗?

谢谢

最佳答案

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

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

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

10-06 05:55