Oracle 10g是否符合ANSI SQL-1992子字符串功能标准?

时间:2011-04-16 15:07:40

标签: sql oracle ansi-sql ansi-sql-92

根据ANSI SQL-1992 standard, page 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 个答案:

答案 0 :(得分:6)

SUBSTR

的oracle文档

但您可以查看http://troels.arvin.dk/db/rdbms/#functions-SUBSTRING

  

不提供标准SUBSTRING   功能。提供   SUBSTR(输入,启动POS [,长度])   相反(即长度是可选的)。   Oracle提供了许多   SUBSTR-variants(SUBSTRB,SUBSTRC,   SUBSTR2,SUBSTR4,语法相同   SUBSTR),主要用于处理各种   各种非拉丁语的字符串类型。   Oracle没有支持   字符串提取与特殊   SQL风格的正则表达式。   相反,它有REGEXP_SUBSTR   提供字符串的功能   提取,使用POSIX风格的常规   表达模式匹配。

答案 1 :(得分:-5)

试试这个

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

它适用于任何标准