Соответствует ли 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) ОТ ДВОЙНОГО;
Это будет работать в любом стандарте