テキスト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'のみを含む配列です。