在Oracle和PostgreSQL数据库上执行时查询返回不同结果的查询

时间:2018-06-28 06:00:46

标签: sql database oracle postgresql

是否存在可以在Oracle和PostgreSQL数据库(包含相同数据)上执行的(SQL,事务或任何其他)查询(或查询序列),但返回的结果不同?

2 个答案:

答案 0 :(得分:1)

两个数据库中的空处理都会有所不同

SELECT 123||456
  • PostgreSQL将抛出错误“操作符不存在:整数||整数”
  • Oracle将返回123456(返回数据类型为字符串)

    SELECT null || 456

  • PostgreSQL将返回null

  • Oracle将返回456

表tst具有以下提到的字段 x int y varchar z日期

select coalesce(x, '1000') from tst;
  • 如果x为null,PostgreSQL将返回1000
  • Oracle将引发错误ORA-00932:数据类型不一致:预期 NUMBER获得了CHAR

答案 1 :(得分:0)

TRUNC函数在Postgres和Oracle中为数字返回不同的结果。

Postgres

create table tab_name as select 20 as col_name ; 

select trunc(col_name) from tab_name;
trunc
-----
20.0

文档:http://www.postgresqltutorial.com/postgresql-trunc/

Oracle

create table tab_name as select 20 as col_name from dual; 

select trunc(col_name) as trunc from tab_name;

TRUNC
-----
 20

文档:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions200.htm