Соответствует ли Oracle 10g стандарту функций подстроки ANSI SQL-1992? - PullRequest
3 голосов
/ 16 апреля 2011

Согласно стандарту ANSI SQL-1992, стр. 132 , это синтаксис функции подстроки ANSI:

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

Быстрый тест в SQL-разработчике на схеме Oracle 10g:

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

Результат:

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

Означает ли это, что Oracle 10g не соответствует данному конкретному стандарту ANSI?

Я просто хотел бы использовать стандартную функцию подстроки ANSI вместо специфичной для поставщика.

Ответы [ 2 ]

6 голосов
/ 16 апреля 2011

документация оракула для SUBSTR

но вы можете проверить это http://troels.arvin.dk/db/rdbms/#functions-SUBSTRING

Не предоставляет стандартную подписку функция. Обеспечивает SUBSTR (входные, пуско-позы [, длина]) вместо этого (то есть длина является необязательной). Oracle предоставляет ряд SUBSTR-варианты (SUBSTRB, SUBSTRC, SUBSTR2, SUBSTR4, тот же синтаксис, что и для SUBSTR), в основном для обработки различных виды нелатинских строковых типов. Oracle не поддерживает извлечение строки с помощью специального Регулярные выражения в стиле SQL. Вместо этого он имеет REGEXP_SUBSTR функция, которая предлагает строку извлечение, используя обычный стиль POSIX соответствие шаблону выражения.

0 голосов
/ 16 апреля 2011

Попробуйте это

ВЫБРАТЬ ПОДПИСЬ ('ASDF', 1,1) ОТ ДВОЙНОГО;

Будет работать в любом стандарте

...