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 选项 [兼容性]

控制 SUBSTRING (SUBSTR) 函数在为启动参数或长度参数提供了负值时的行为。

允许值

Off、On

缺省值

On

作用域

可以为单个连接或 PUBLIC 组设置此选项。设置立即生效。

说明

ansi_substring 选项设置为 On 时,SUBSTRING 函数的行为相当于 ANSI/ISO SQL/2003 行为。如果起始偏移为负或零,则视为字符串左侧用非字符填补,并且在提供负值长度的情况下会出现错误。

当此选项设置为 Off 时,SUBSTRING 函数的行为与先前版本的 SQL Anywhere 的行为相同:负的起始偏移表示从字符串末尾开始的偏移,而负的长度表示所需的子串在起始偏移左侧第 N 个字符处结束,其中 N 为长度。并且,起始偏移 0 等效于起始偏移 1。

此选项的设置并不影响 BYTE_SUBSTR 函数的行为。建议在使用 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'