CHANGE


1 CHange(string,
1  old ,? new
1  , new
2? ,
3.1! 1
3.1 count
2?,
3.1! 1
3.1 start
2?,
3.1! 0
3.1 length
2 )

サブストリング old をサブストリング new に、count で指定した回数だけ変更した string を戻します。count のデフォルト値は 1 です。count を指定する場合、それはゼロか正の整数でなければなりません。ゼロを指定すると、string に出現する old は、すべて new に変更されます。

サブストリング old について検査される string 内のバイト位置を、 開始バイト位置 (start) および長さ (length) をバイトで指定することによって 限定することができます。start のデフォルト値は 1 です。start を指定する場合、それは正の整数でなければなりません。start が LENGTH(string) よりも大きければ、CHANGE 関数は無効になります。length を指定する場合、それはゼロか正の整数でなければなりません。length を省略するか、またはゼロを指定すると、バイト位置 start からの残りの string が検査されます。length が LENGTH(old) よりも小さければ、CHANGE 関数は無効になります。

サブストリング old および new の長さは違っても構いません。old を省略すると、サブストリング new が、start によって指示されたバイト位置で、string に挿入されます。new を省略すると、 サブストリング oldstring から削除されます。

以下にいくつか例を示します。

例 1
CHANGE('abcabcabc','abc','DeF')      ⟶    'DeFabcabc'
        /*  1 (default) occurrence of old changed           */
例 2
CH('abcabcabc','abc','DeF',2)        ⟶    'DeFDeFabc'
        /*  2 occurrences of old changed                    */
例 3
CHANGE('abcabcabc','abc','DeF',0)    ⟶    'DeFDeFDeF'
       /*  count = 0, all occurrences of old changed        */
例 4
CH('abcabcabc','abc','DeF',,4)       ⟶    'abcDeFabc'
       /*  1 (default) occurrences of old changed,          */
       /*  starting at position 4                           */
例 5
CHANGE('aaaaaaaa','a',A',0,3,2)      ⟶    'aaAAaaaa'
       /*  all occurrences of old changed, starting at      */
       /*  position 3 for a length of 2                     */
例 6
CH('abcabcabc','a',,0)               ⟶    'bcbcbc'
       /*  new omitted, count = 0,                          */
       /*  all occurrences of old deleted                   */
例 7
CHANGE('abc',,'def',,2)              ⟶    'adefbc'
       /*  old omitted, new inserted, starting at           */
       /*  position 2                                       */