Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの設定 » データベース・オプション » データベース・オプションの概要 » アルファベット順のオプション・リスト

 

ansi_substring オプション [互換性]

start パラメータまたは length パラメータに負の値が設定された場合の SUBSTRING (SUBSTR) 関数の動作を制御します。

指定可能な値

Off、On

デフォルト

On

スコープ

個々の接続または PUBLIC グループに設定できます。すぐに有効になります。

説明

ansi_substring オプションを On に設定した場合、SUBSTRING 関数は ANSI/ISO SQL/2003 と同じ動作をします。開始オフセットが負または 0 の場合は、文字列の左側が文字以外で埋められているかのように扱われ、このときに負の長さが指定されるとエラーになります。

このオプションを Off に設定すると、SUBSTRING 関数は SQL Anywhere の以前のリリースと同じ動作となります。つまり、負の開始オフセットは文字列の末尾からのオフセットを意味し、負の長さは開始オフセットから length 文字左側の位置で部分文字列が終わることを意味します。また、開始オフセット 0 を使用した場合、開始オフセット 1 と同じ結果となります。

このオプションの設定は、BYTE_SUBSTR 関数の動作には影響しません。SUBSTRING 関数では、開始オフセットを正でない値に設定したり負の長さを指定したりしないことをおすすめします。可能なかぎり、SUBSTRING 関数の代わりに LEFT 関数または RIGHT 関数を使用してください。

参照

次の例は、ansi_substring オプションの設定によって SUBSTRING 関数の戻り値がどのように変わるかを示しています。

SUBSTRING( 'abcdefgh',-2,4 );
  ansi_substring = Off ==> 'gh' // substring starts at second-last character
  ansi_substring = On  ==> 'a'  // takes the first 4 characters of 
                                // ???abcdefgh and discards all ?
SUBSTRING( 'abcdefgh',4,-2 );
  ansi_substring = Off ==> 'cd'
  ansi_substring = On  ==> value -2 out of range for destination

SUBSTRING( 'abcdefgh',0,4 );
  ansi_substring = Off ==> 'abcd'
  ansi_substring = On  ==> 'abc'