【发布时间】:2015-08-20 14:07:59
【问题描述】:
我在运行下面的窗口时遇到以下异常
错误:运算符不存在:数字 = 可变字符提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。”在使用查询参数执行时
我将使用函数作为命名参数的参数的数字字符串传递给查询
getUIDCount(String id) {
...
select count(UID) as icrd FROM UID_tbl WHERE id = ?
...
}
其中 id 是数字 (5,0)" 在表格中
在 Ubuntu 上一切正常,但在 Windows 上运行相同代码时出现错误。我必须为 Windows 进行显式转换。我正在使用 PostgreSQL 9.4.3。我正在使用“org.hibernate.dialect.PostgreSQLDialec”和 grails 2.3.11 和运行时 'org.postgresql:postgresql:9.3-1100-jdbc41'
更新了它的调用方式
def Integer getUIDSetSize(String _id)
{
Integer i = 0;
Sql sql = new Sql(dataSource);
String sqlt = """select count(UID) as icrd FROM UID_tbl WHERE _id = ?""";
log.trace(sqlt);
sql.eachRow(sqlt, [_id], { row -> i = row.icrd; });
return i;
}
这就是它的名称 def _id1 = params._id1; count1 = HelperService.getUIDSetSize(_id1)
【问题讨论】:
-
数字数据类型不需要引号。 (如果确实需要引号,则需要单引号)
-
请添加您在没有演员表的情况下得到的错误
-
"1234567"是列名,不是字符串文字。您的查询将导致错误消息:column "1234567" does not exist(除非您确实有一个名为1234567的列,我非常怀疑 -
@Santosh 那么很清楚:即使列是数字,您也在发送一个字符串。不要将它们作为字符串发送
-
@sami-kuhmonen 但同样的查询也适用于 Ubuntu
标签: windows postgresql ubuntu sqldatatypes