3

根据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 标准子字符串函数而不是供应商特定的函数。

4

2 回答 2

6

SUBSTR的 oracle 文档

但你可以检查这个http://troels.arvin.dk/db/rdbms/#functions-SUBSTRING

不提供标准的 SUBSTRING 功能。提供 SUBSTR(input,start-pos[,length]) 代替(即长度是可选的)。Oracle 提供了许多 SUBSTR 变体(SUBSTRB、SUBSTRC、SUBSTR2、SUBSTR4,与 SUBSTR 的语法相同),主要用于处理各种非纯拉丁字符串类型。Oracle 不支持使用特殊的 SQL 风格的正则表达式提取字符串。相反,它具有 REGEXP_SUBSTR 函数,该函数使用 POSIX 样式的正则表达式模式匹配提供字符串提取。

于 2011-04-16T15:23:10.120 回答
-5

试试这个

选择 SUBSTRING('ASDF' ,1,1) 从双;

它适用于任何标准

于 2011-04-16T19:29:04.903 回答