3

ANSI SQL-1992 標準の 132 ページによると、これは ANSI サブストリング関数の構文です。

<character substring function> ::=
    SUBSTRING <left paren> <character value expression> FROM <start position>
    FOR <string length> ] <right paren>

Oracle 10g スキーマでの SQL 開発者による簡単なテスト:

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 スタイルの正規表現を使用した文字列抽出をサポートしていません。代わりに、POSIX スタイルの正規表現パターン マッチングを使用して文字列抽出を提供する REGEXP_SUBSTR 関数があります。

于 2011-04-16T15:23:10.120 に答える
-5

これを試して

DUAL から SUBSTRING('ASDF' ,1,1) を選択します。

どの規格でも機能します

于 2011-04-16T19:29:04.903 に答える