Jav*_*cky 3 sql oracle ansi-sql ansi-sql-92
根据ANSI SQL-1992标准,第132页,这是ANSI子字符串函数的语法:
<character substring function> ::=
SUBSTRING <left paren> <character value expression> FROM <start position>
FOR <string length> ] <right paren>
Run Code Online (Sandbox Code Playgroud)
SQL开发人员在oracle 10g架构上的快速测试:
SELECT SUBSTRING('ASDF' FROM 1 FOR 1) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
结果是:
ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
Error at Line: 1 Column: 28
Run Code Online (Sandbox Code Playgroud)
这是否意味着Oracle 10g不符合此特定ANSI标准?
我只想使用ANSI标准子字符串函数而不是特定于供应商的函数.
SUBSTR的 oracle文档
但你可以检查这个http://troels.arvin.dk/db/rdbms/#functions-SUBSTRING
不提供标准SUBSTRING功能.改为提供SUBSTR(input,start-pos [,length])(即length是可选的).Oracle提供了许多SUBSTR变体(SUBSTRB,SUBSTRC,SUBSTR2,SUBSTR4,与SUBSTR相同的语法),主要用于处理各种非拉丁语字符串类型.Oracle不支持使用特殊的SQL样式正则表达式进行字符串提取.相反,它具有REGEXP_SUBSTR函数,该函数使用POSIX样式的正则表达式模式匹配提供字符串提取.