テキストFormula関数
テキスト・データの操作に使用できるFormula関数は、次のとおりです。
CHR(n)
数値オペランドnと等価のバイナリを持つASCII文字セットの文字を返します。
GREATEST(expr, expr [,expr]....)
すべてのテキスト文字列オペランドの値を比較します。アルファベット順で最後の文字列の値を返します。
INITCAP(expr)
各単語の先頭を大文字にした式exprを返します。英数字以外の単語または文字を空白で区切ります。
INSTR(expr1, expr2 [,n [,m]])
n番目の文字で始まるexpr1を検索して、m番目のexpr2の発生を検出し、この発生の最初の文字のexpr1内での位置を返します。nが負の場合、INSTRはカウントと検索をexpr1の末尾から先頭に向かって実行します。値mは正である必要があります。nとmのデフォルト値は両方とも1であるため、INSTRはexpr1の最初の文字から検索し、expr2の最初の発生を見つけます。nの値に関係なく、戻り値はexpr1の先頭からの相対値であり、文字で表現されます。検索に失敗した場合(expr1がexpr1のn番目の文字の後にm回出現しない)、戻り値0が返されます。
INSTRB(expr1, expr2 [,n [,m]])
INSTRと同じように動作しますが、nおよび戻り値が文字ではなくバイトで表現されます。シングルバイトの文字セットの場合、INSTRBはINSTRに相当します。
LEAST(expr, expr [,expr]...)
すべてのテキスト文字列オペランドの値を比較します。オペランドの中からアルファベット順で最初の文字列を返します。
LENGTH(expr)
テキスト文字列オペランドexpr内の文字数を返します。
LENGTHB(expr)
exprの長さをバイトの単位で返します。
LOWER(expr)
テキスト文字列を小文字に変換します。
LPAD(expr, n [,pad])
テキスト文字列オペランドexprの左側に、padの文字を連続で埋め込んでnの長さにして返します。padのデフォルト値は空白です。exprがnより長い場合、LPADはnに収まる範囲でexprを返します。
次に、この式の例をいくつか示します。
/* A is set to 'XYXYXhello' */
A = LPAD ('hello, 10, 'XY')
/* A is set to 'hell' */
A = LPAD ('hello', 4 )
LTRIM(expr [,set])
テキスト文字列オペランドexprの一番左から、set内の文字をすべて削除して戻します。setのデフォルトは空白です。set内にexprの最も左の文字がない場合は、LTRIMはexprを返します。
例:
/* A is set to 'def' */
A = LTRIM ('abcdef','abc')
/* A is set to 'abcdef' *
/A = LTRIM ('abcdef','bc')
REPLACE(expr, search [,replacement])
出現するすべてのsearchをreplacementに置換した状態で、テキスト文字列オペランドexprを返します。replacementを省略した場合、すべてのsearchが削除されます。1つの文字列を別の文字列に置換したり、文字列を削除したりするにはREPLACEを使用します。
例:
/* Set A to 'BLACK and BLUE'. */
A = REPLACE('JACK and JUE', 'J', BL')
RPAD(expr, n [,pad])
テキスト文字列オペランドexprの右側に、padの文字を連続で埋め込んでnの長さにして返します。padのデフォルト値は空白です。exprがnより長い場合、RPADはnに収まる範囲でexprを返します。
例:
/* A is set to 'helloXYXYX' */
A = RPAD ('hello, 10, 'XY')
/* A is set to 'hell' */
A = RPAD ('hello', 4 )
RTRIM(expr [,set])
テキスト文字列オペランドexprの一番右から、set内の文字をすべて削除して戻します。setのデフォルト値は空白です。set内にexprの一番右の文字がない場合は、exprが戻されます。
例:
/* A is set to 'abc' */
A = RTRIM ('abcdef','def')
/* A is set to 'abcdef' */
A = RTRIM ('abcdef','de')
SUBSTR(expr, m [,n])またはSUBSTRING(expr, m [,n])
SUBSTRINGは、テキスト文字列オペランドexprのm番目の文字からn文字の長さの部分文字列を返します。nが負の場合、SUBSTRはexprを逆方向にカウントします。nを省略した場合、mから始まりexprの末尾で終わる部分文字列が返されます。
例:
/* Check that the tax code starts with GG */
IF length(Tax_code) <= 2
THEN
(message = 'Tax code is too short'
RETURN message
)IF substr( Tax_code, 1, 2) = 'GG' THEN ...
SUBSTRB((expr, m [,n])
SUBSTRと同じですが、引数mおよびnが文字ではなくバイトで表現されます。シングルバイトのデータベース文字セットの場合、SUBSTRBはSUBSTRに相当します。
TRANSLATE(expr,from,to)
テキスト文字列オペランドexpr内に出現するfromの各文字をすべて、to内の対応する文字に置換して返します。fromに含まれていないexpr内の文字は置換されません。引数fromにはtoよりも多くの文字を含めることができます。その場合、fromの最後の文字に対応する文字がtoにありません。このような余分な文字がexpr内にある場合、これらは戻り値から除去されます。
TRIM(expr)
文字列から先頭および末尾のスペースを削除します。
UPPER(expr)
テキスト文字列を大文字に変換します。
SPLIT FUNCTIONS
これらのテキストFormula関数は、TEXT_NUMBER配列を返します。配列には、文字列をセパレータで分割した結果が含まれます。
SPLIT_BY_SPACES
セパレータは、一連の1つ以上の連続するスペースです。ここで"スペース"には、スペース' 'に加えてタブ文字、改行が含まれます。
SPLIT_BY_SPACES(expr)
SPLIT_BY_SPACESの例を次に示します。
SPLIT_BY_SPACES(' Hello World !! ')
戻り値は、'Hello'、'World'をその順序で含む配列です。
SPLIT
SPLIT(expr, separator, default_string)
exprをセパレータで区切った文字列に分割し、TEXT_NUMBER配列内の文字列を返します。連続する2つのセパレータの間に何もない場合は、配列にdefault_stringが返されます。
SPLITの例1:
SPLIT('Hello|World', '|', '_')
戻り値は、'Hello'、'World'をその順序で含む配列です。
SPLITの例2 複数文字セパレータ:
SPLIT('Hello||World', '||', '_')
戻り値は、'Hello'、'World'をその順序で含む配列です。
SPLIT('|Hello||World|', '|', '_')戻り値は、'_'、'Hello'、'_'、'World'、'_'をその順序で含む配列です。デフォルト文字列'_'は、セパレータ間のギャップ(最初の'|'の前、2番目の'|'の後、3番目の'|'の前、最後の'|'の後)を置換します。
SPLIT('Hello', '||', '_')戻り値は'Hello'のみを含む配列です。