Postgres数据类型转换在Ubuntu和Windows上有所不同

时间:2015-06-05 14:55:56

标签: windows postgresql ubuntu sqldatatypes

我在运行以下

时在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)

  

1 个答案:

答案 0 :(得分:0)

  
    

从varchar转换为numeric的解决方法是

  
CREATE CAST(VARCHAR AS NUMERIC) WITH INOUT AS IMPLICIT;
  

这不是最佳解决方案,并建议从代码中选择性投射。