我在运行以下
时在Windows上遇到异常错误:运算符不存在:numeric =字符变化提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。"使用查询参数
执行时
我将参数的Numeric String用作查询的命名参数
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 with runtime' 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)
答案 0 :(得分:0)
从varchar转换为numeric的解决方法是
CREATE CAST(VARCHAR AS NUMERIC) WITH INOUT AS IMPLICIT;
这不是最佳解决方案,并建议从代码中选择性投射。