根据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标准子字符串函数而不是特定于供应商的函数。
答案 0 :(得分:6)
但您可以查看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;
它适用于任何标准