2012-02-17 55 views
1

在MySQL中,以下查询正在正确执行。MySQL搜索查询未在Postgres DB中执行

SELECT * FROM <Table-name> WHERE (Table.ID LIKE '1%') 

但是,当我尝试执行Postgres里上面的查询,我得到下面的异常

"org.postgresql.util.PSQLException: ERROR: operator does not exist: integer ~~ unknown Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts".

如果我转换了相同的查询

SELECT * 
FROM <Table-name> 
WHERE CAST(Table.ID as TEXT) LIKE '1%' 

这得到了在Postgres直接执行D B。但我需要一些查询,它隐式地在DB中进行类型转换,这使我可以在没有任何异常的情况下执行MySQL查询。因为我记得有一个整数布尔隐式类型转换的方法。

在此先感谢。

+0

欢迎使用StackOverflow:如果您发布代码,XML或数据样本,**请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)格式和语法突出显示它! – 2012-02-17 09:25:02

+0

据我所知隐式强制转换在PostgreSQL 8.3中被删除。你在什么版本上? – 2012-02-17 09:42:37

+1

这些确实是数字,用'LIKE'搜索没有任何意义。如果这些不是真实的数字,而是将它们存储在'varchar'列中。 – 2012-02-17 11:10:08

回答

2

如果您使用[postgresql] explicit type casts搜索此网站,您将获得足够的信息来解决您的问题。