Search code examples
sqloracleansi-sqlansi-sql-92

Does Oracle 10g comply with the ANSI SQL-1992 substring function standard?


According to the ANSI SQL-1992 standard, page 132, this is the syntax for the ANSI substring function:

<character substring function> ::=
    SUBSTRING <left paren> <character value expression> FROM <start position>
    FOR <string length> ] <right paren>

A quick test in SQL developer on an oracle 10g schema:

SELECT SUBSTRING('ASDF' FROM 1 FOR 1) FROM DUAL;

Results in:

ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:
Error at Line: 1 Column: 28

Does this mean Oracle 10g does not comply with this particular ANSI standard?

I simply would like to use an ANSI standard substring function instead of a vendor specific one.


Solution

  • oracle documentation for SUBSTR

    but you can check this http://troels.arvin.dk/db/rdbms/#functions-SUBSTRING

    Doesn't provide the standard SUBSTRING function. Provides SUBSTR(input,start-pos[,length]) instead (i.e. length is optional). Oracle provides a number of SUBSTR-variants (SUBSTRB, SUBSTRC, SUBSTR2, SUBSTR4, same syntax as for SUBSTR), mainly for handling various kinds of non-latin-only string-types. Oracle doesn't have support for string-extraction with the special SQL-style regular expressions. Instead, it has the REGEXP_SUBSTR function which offers string extraction, using POSIX-style regular expression pattern matching.