Re: BUG #15971: Behaviour of SUBSTR function depending on itsarguments - Mailing list pgsql-bugs

From Thomas Kellerer
Subject Re: BUG #15971: Behaviour of SUBSTR function depending on itsarguments
Date
Msg-id 89fff570-c391-26ef-49d6-b1e9afd3f5db@gmx.net
Whole thread Raw
In response to BUG #15971: Behaviour of SUBSTR function depending on its arguments  (PG Bug reporting form <noreply@postgresql.org>)
List pgsql-bugs
PG Bug reporting form schrieb am 21.08.2019 um 09:02:

> select substr('abcdef',1,2) val1, substr('abcdef',0,2) val2,
> substr('abcdef',-1,2) val3;
> 
> The above query in Postgres returns expected result for val1 ('ab') but for
> val2 and val3, it returns 'a' and '' respectively. Oracle and most of other
> RDBMS systems would return 'ab' for val1 and val2. 

The only "other" DBMS that behaves the way you describe it, is Oracle. 

When I ran it on different systems, this is the result:

           | val1 |  val2   | val3    |
-----------|------|---------|---------|
Postgres   |  ab  |    a    | <empty> |
SQL Server |  ab  |    a    | <empty> |
SQLite     |  ab  |    a    |    f    |
MySQL      |  ab  | <empty> |    f    |
Oracle     |  ab  |   ab    |    f    |

DB2 and Firebird do not allow a starting position smaller than 1 

So SQL Server works the same as Postgres and Oracle is the only one that returns 'ab' for the second case

So clearly the claim "most other" is wrong here. 




pgsql-bugs by date:

Previous
From: Ashutosh Sharma
Date:
Subject: Re: BUG #15971: Behaviour of SUBSTR function depending on its arguments
Next
From: Pavel Stehule
Date:
Subject: Re: BUG #15971: Behaviour of SUBSTR function depending on its arguments