文字列関数

CLEM では、文字列に対して次の操作を行うことができます。

  • 文字列の比較
  • 文字列の生成
  • 文字へのアクセス

CLEM では、文字列とは、一組の二重引用符で囲まれた一連の任意の文字のことです (例: "string quotes")。任意の単一の英数字が、文字 (CHAR) になります。これらは、`<文字>` の形式で、単一逆引用符を使用して CLEM 式内で宣言されます。例えば、`z``A`、または `2` です。範囲外の文字、または文字列に対する逆索引文字は、未定義の動作が生じます。

注: SQL プッシュバックを使用する文字列と使用しない文字列と比較すると、接尾空白を含むさまざまな結果を生成する場合があります。
表 1. CLEM 文字列関数
関数 結果 説明
allbutfirst(N, STRING) 文字列 STRING の先頭 N 文字‚ð削除した文字列を返します。
allbutlast(N, STRING) 文字列 STRING の最後の文字を削除した文字列を返します。
alphabefore(STRING1, STRING2) Boolean 文字列のアルファベット順を確認するために用いられます。STRING1STRING2 より前にある場合に真を返します。
endstring(LENGTH, STRING) 文字列 指定した文字列から最後の N 文字を抽出します。文字列の長さが指定した長さよりも短いか、またはそれに等しい場合は、変更されません。
hasendstring(STRING, SUBSTRING) 整数 この関数は、isendstring(SUBSTRING, STRING) と同じです。
hasmidstring(STRING, SUBSTRING) 整数 この関数は、ismidstring(SUBSTRING, STRING) (埋め込みサブ文字列) と同じです。
hasstartstring(STRING, SUBSTRING) 整数 この関数は、isstartstring(SUBSTRING, STRING) と同じです。
hassubstring(STRING, N, SUBSTRING) 整数 この関数は、issubstring(SUBSTRING, N, STRING) と同じです。N のデフォルトは 1 です。
count_substring(STRING, SUBSTRING) 整数 指定したサブ文字列が文字列内に発生する回数を返します。例を次に示します。 count_substring("foooo.txt", "oo") は 3 を返します。
hassubstring(STRING, SUBSTRING) 整数 この関数は、issubstring(SUBSTRING, 1, STRING) と同じです。N のデフォルトは 1 です。
isalphacode(CHAR) Boolean CHAR が、文字コードが文字である指定された文字列 (通常フィールド名) 中の文字の場合に真を返します。それ以外の場合、この関数は 0 の値を返します。例えば、isalphacode(produce_num(1)) です。
isendstring(SUBSTRING, STRING) 整数 文字列 STRING がサブ文字列 SUBSTRING で終わる場合、この関数は、STRING 内の SUBSTRING の整数の添字を返します。それ以外の場合、この関数は 0 の値を返します。
islowercode(CHAR) Boolean CHAR が指定された文字列 (通常フィールド名) の小文字の場合に、真 (true) の値を返します。それ以外の場合、この関数は 0 の値を返します。例えば、islowercode(``)islowercode(country_name(2)) は両方とも有効な式です。
ismidstring(SUBSTRING, STRING) 整数 SUBSTRINGSTRING の部分文字列で、STRING の初めの文字から始まっていないか、または最後の文字で終わっていない場合、この関数は部分文字列が始まる位置の添字を返します。それ以外の場合、この関数は 0 の値を返します。
isnumbercode(CHAR) Boolean 指定された文字列 (通常フィールド名) の CHAR が、文字コードが数字である文字の場合に真を返します。それ以外の場合、この関数は 0 の値を返します。例えば、isnumbercode(product_id(2)) です。
isstartstring(SUBSTRING, STRING) 整数 文字列 STRING がサブ文字列 SUBSTRING から始まる場合、この関数は添字 1 を返します。そうでない場合は、この関数は 0 の値を返します。
issubstring(SUBSTRING, N, STRING) 整数 この関数は、文字列 STRINGN 番目の文字から始めて、文字列 SUBSTRING と等しいサブ文字列を検索します。文字列が見つかった場合、一致する部分文字列が始まる位置の添字 M (整数) を返します。それ以外の場合、この関数は 0 の値を返します。N が与えられていない場合、この関数はデフォルトで 1 になります。
issubstring(SUBSTRING, STRING) 整数 この関数は、文字列 STRINGN 番目の文字から始めて、文字列 SUBSTRING と等しいサブ文字列を検索します。文字列が見つかった場合、一致する部分文字列が始まる位置の添字 M (整数) を返します。それ以外の場合、この関数は 0 の値を返します。N が与えられていない場合、この関数はデフォルトで 1 になります。
issubstring_count(SUBSTRING, N, STRING): 整数 指定した STRING 内で N番目に発生した SUBSTRINGのインデックスを返します。N番目に発生する SUBSTRINGよりも少ない場合、0 を返します。
issubstring_lim(SUBSTRING, N, STARTLIM, ENDLIM, STRING) 整数 この関数は issubstring と同じですが、添字 STARTLIM から、またはその前から始まり、添字 ENDLIM で、またはその前で終わるように、マッチングが制限されます。STARTLIM 制約または ENDLIM 制約は、どちらかの引数に偽 (false) の値を指定することによって無効にできます。例えば、issubstring_lim(SUBSTRING, N, false, false, STRING)issubstring と同じです。
isuppercode(CHAR) Boolean この関数は CHAR が大文字の場合に、真 (true) の値を返します。それ以外の場合、この関数は 0 の値を返します。例えば、isuppercode(``)isuppercode(country_name(2)) は両方とも有効な式です。
last(CHAR) 文字列 この関数は、STRING の最後の文字 CHAR を返します(少なくとも 1 文字以上の長さがなければなりません)。
length(STRING) 整数 文字列 STRING の長さ (つまり文字列内の半角文字数) を返します。
locchar(CHAR, N, STRING) 整数 シンボル値フィールド中の文字の位置を識別するために用いられます。この関数は、文字列 STRING 内の文字 CHAR の検索を、STRINGN 番目の文字から開始します。この関数は、文字が見つかった (N から始まる) 位置を示す値を返します。文字が見つからない場合は 0 を返します。関数のオフセット (N) が無効な場合 (例えばオフセットが文字列の長さを超えているなど)、この関数は $null$ を返します。 例えば、locchar(`n`, 2, web_page) は、フィールド web_page 内の `n` 文字の検索を、フィールド値の 2 番目の文字から開始します。 : 指定する文字を、忘れずに、単一逆引用符で囲むようにしてください。
locchar_back(CHAR, N, STRING) 整数 locchar に似ていますが、N 番目の文字から前方向に検索される点が異なります。例えば、locchar_back(`n`, 9, web_page) と指定すると、フィールド web_page の 9 番目の文字から、文字列の先頭方向に向かって検索が開始されます。関数のオフセットが無効な場合 (例えばオフセットが文字列の長さを超えているなど)、この関数は $null$ を返します。できる限り、locchar_back を関数 length(<field>) とともに使用して、フィールドの現在の値の長さを動的に使用することをお勧めします。例えば、locchar_back(`n`, (length(web_page)), web_page) です。
lowertoupper(CHAR) lowertoupper (STRING) CHAR または String 文字または文字列を入力にすることができ、同じデータ型の新しい項目を返すために用いられます。その際小文字はすべて同じ文字の大文字に変換されます。 例えば、lowertoupper(`a`)lowertoupper(“My string”)、および lowertoupper(field_name(2)) はすべて有効な式です。
matches Boolean 文字列が指定したパターンに一致する場合、真を返します。パターンは文字列リテラルにする必要があり、パターンを含むフィールド名にしてはなりません。クエスチョン・マーク (?) をパターンに含めて正確に 1 つの文字に一致させることができます。アスタリスク (*) は 0 かそれ以上の文字数に一致します。リテラル・クエスチョン・マークまたはアスタリスクを(むしろ、ワイルドカードとして使用しないで)一致させるために、バックスラッシュをエスケープ文字として使用することができます。
replace(SUBSTRING, NEWSUBSTRING, STRING) 文字列 指定した STRING 内で、SUBSTRING のすべてのインスタンスを NEWSUBSTRINGを使用して置き換えます。
replicate(COUNT, STRING) 文字列 指定した回数だけコピーされた元の文字列を含む文字列を返します。
stripchar(CHAR,STRING) 文字列 文字列またはフィールドから、指定した文字を削除します。この関数を利用すれば、データから通貨表記などの余分な記号を削除して、単純な数字または名前を取得できます。例えば、シンタックス stripchar(`$`, 'Cost') を使用すると、すべての値からドル記号を削除した新しいフィールドが返されます。 : 指定する文字を、忘れずに、単一逆引用符で囲むようにしてください。
skipchar(CHAR, N, STRING) 整数 文字列 STRINGN 文字目から、CHAR 以外の文字を検索します。この関数は、見つかった文字の位置を示す整数サブ文字列を返します。N 番目以降のすべての文字が CHAR の場合は、0 を返します。関数のオフセットが無効な場合 (例えばオフセットが文字列の長さを超えているなど)、この関数は $null$ を返します。 locchar は、よく関数 skipchar と一緒に、N (文字列の検索開始点) の値を判断するために用いられます。例えば、skipchar(`s`, (locchar(`s`, 1, "MyString")), "MyString") です。
skipchar_back(CHAR, N, STRING) 整数 skipchar に似ていますが、N 番目の文字から前に戻る方向に検索される点が異なります。
startstring(LENGTH, STRING) 文字列 指定した文字列から最初のN 文字を抽出します。文字列の長さが指定した長さよりも短いか、またはそれに等しい場合は、変更されません。
strmember(CHAR, STRING) 整数 locchar(CHAR, 1, STRING) と同じです。CHAR が最初に出現する位置を示す整数サブ文字列、または 0 を返します。関数のオフセットが無効な場合 (オフセットが文字列の長さを超えているなど)、この関数は $null$ を返します。
subscrs(N, STRING) CHAR 入力文字列 STRINGN 番目の文字 CHAR を返します。この関数は、STRING(N) という短い形式で記述することもできます。例えば、lowertoupper(“name”(1)) は有効な式です。
substring(N, LEN, STRING) 文字列 文字列 SUBSTRING を返します。この文字列は、文字列 STRING の添字 N から LEN 文字分の文字列で構成されています。
substring_between(N1, N2, STRING) 文字列 添字 N1 から始まり、添字 N2 で終わる STRING のサブ文字列を返します。
trim(STRING) 文字列 指定した文字列から、文字列の前後の空白文字を削除します。
trim_start(STRING) 文字列 指定した文字列から、文字列の前の空白文字を削除します。
trimend(STRING) 文字列 指定した文字列から、文字列の後の空白文字を削除します。
unicode_char(NUM) CHAR 16 進数値ではなく 10 進数を入力する必要があります。NUM の Unicode 値を返します。
unicode_value(CHAR) NUM CHAR の Unicode 値を返します。
uppertolower(CHAR) uppertolower (STRING) CHAR または String 文字または文字列を入力にすることができ、同じデータ型の新しい項目を返すために用いられます。その際、大文字はすべて同じ文字の小文字に変換されます。 : 文字列は二重引用符で、文字は単一の逆引用符で忘れずに指定するようにしてください。単純なフィールド名の場合は、引用符は使用しません。