Соответствует ли Oracle 10g стандарту функций подстроки ANSI SQL-1992?

Согласно стандарту 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 ответа

Решение

оракульная документация для СУБСТР

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

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

Попробуй это

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

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

Другие вопросы по тегам