根据ANSI SQL-1992标准第132页,这是ANSI子字符串函数的语法:
<character substring function> ::=
SUBSTRING <left paren> <character value expression> FROM <start position>
FOR <string length> ] <right paren>
SQL developer在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标准子字符串函数,而不是供应商特定的。
oracle documentation for SUBSTR
但是你可以查看http://troels.arvin.dk/db/rdbms/#functions-SUBSTRING
没有提供标准的SUBSTRING函数。提供了SUBSTR(输入,start-pos [,])相反(即长度是可选的)。Oracle提供了许多substr -变体(SUBSTRB, SUBSTRC,SUBSTR2, SUBSTR4,语法与for相同SUBSTR),主要用于处理各种非纯拉丁字符串类型的种类。Oracle不支持字符串提取与特殊sql风格的正则表达式。相反,它有REGEXP_SUBSTR提供字符串的函数提取,使用posix风格的正则表达式模式匹配。
试试这个
SELECT SUBSTRING('ASDF',1,1) FROM DUAL;
任何标准