3.5.2. 文字列関数
文字列関数は一般的に文字列を入力として取得し、文字列を出力として返します。
指定されていない場合、以下の表のすべての引数および戻り値の型は文字列であり、すべてのインデックスは 1 をベースとします。0 インデックスは文字列の開始前に考慮されます。
機能 | 定義 | データタイプ制約 |
---|---|---|
x || y | Concatenation Operator | X,y in {string, clob}, return type is string or character large object(CLOB) |
ASCII(x) |
x の左文字の ASCII 値を指定します[1]。入力として空の文字列は | 戻り値の型は整数です |
CHR(x) CHAR(x) |
ASCII 値の | x in {integer} [1] エンジンの ASCII 関数および CHR 関数の実装では、文字は UCS2 値のみに制限されます。プッシュダウンでは、文字値のソースがコード 255 以外の文字値の整合性はほとんどありません。 |
CONCAT(x, y) | ANSI セマンティクスで x および y を連結します。x や y が null の場合は、null を返します。 | X, y({string} の場合) |
CONCAT2(x, y) | 非ANSI null セマンティクスで x および y を連結します。x および y が null の場合は、null を返します。x または y のみが null の場合は、他の値を返します。 | X, y({string} の場合) |
ENDSWITH(x, y) | y が x で終わるかどうかを確認します。x または y が null の場合は、null を返します。 | X, y in {string}, returns boolean |
INITCAP(x) | 文字列 x 大文字、およびその他の小文字で、各単語の最初の文字を作成します。 | x in {string} |
INSERT(str1, start, length, str2) | string2 を string1 に挿入します。 | str1 in {string}, start in {integer}, length in {integer}, str2 in {string} |
LCASE(x) | x の小文字 | x in {string} |
LEFT(x, y) | get left y characters of x | X in {string}, y in {integer}, return string |
LENGTH(x) CHAR_LENGTH(x) CHARACTER_LENGTH(x) | x の長さ | 戻り値の型は整数です |
LOCATE(x, y)POSITION(x IN y) | y の開始時に y の位置を見つけます。 | X in {string}, y in {string}, return integer |
LOCATE(x, y, z) | z から、y で x の位置を見つけます。 | X in {string}, y in {string}, z in {integer}, return integer |
LPAD(x, y) | y の長さの空白があるパッド入力文字列 x。 | X in {string}, y in {integer}, return string |
LPAD(x, y, z) | 文字 z を使用して y の長さのパッド入力文字列 x。 | X in {string}, y in {string}, z in {character}, return string |
LTRIM(x) | 空の文字の左のトリム。 | X in {string}, return string |
QUERYSTRING(path [, expr [AS name] …]) |
指定のパスに追加される適切にエンコードされたクエリー文字列を返します。null 値式は省略され、次に null パスは " として処理されます。名前は列参照式では任意となります。たとえば、 | {string} のパス(例: name)は識別子です。 |
REPEAT(str1,instances) | string1 を指定した回数で繰り返します。 | {string} の str1、{integer} のインスタンス文字列を返します。 |
RIGHT(x, y) | get right y characters of x | X in {string}, y in {integer}, return string |
RPAD(input string x, pad length y) | y の長さの右側のスペースを含むパッド入力文字列 x | X in {string}, y in {integer}, return string |
RPAD(x, y, z) | 文字 z を使用した y の長さのパッド入力文字列 x | X in {string}, y in {string}, z in {character}, return string |
RTRIM(x) | 空の文字の右側のトリミング | X は文字列で、返される文字列です。 |
SPACE(x) | スペース文字 x の回数を繰り返す | X は整数で、返される文字列です。 |
SUBSTRING(x, y)SUBSTRING(x FROM y) | [b] Get substring from x, from the position y to the end of x | {integer} の Y |
SUBSTRING(x, y, z)SUBSTRING(x FROM y FOR z) | [b] 長さ z で位置 y から x のサブ文字列を取得 | Y, z in {integer} |
TRANSLATE(x, y, z) | y の各文字を同じ位置の z の文字に置き換えることで、変換文字列 x を使用します。 | x in {string} |
TRIM([[LEADING|TRAILING|BOTH] [x] FROM] y) | 先頭、末尾、または文字 x の文字列の y の末尾をトリミングします。LEADING/TRAILING/BOTH が指定されていない場合は、BOTH が使用されます。トリム文字 x を指定しないと、空白のスペース「 が使用されます。 | x in {character}, y in {string} |
UCASE(x) | x の大文字 | x in {string} |
UNESCAPE(x) | x のエスケープされていないバージョン。エスケープシーケンスは \b - バックスペース、\t - タブ、\n - 改行、\f - フォームフィード、\r - キャリッジリターンです。エスケープ文字の後に他の文字が表示されると、その文字は出力に表示され、エスケープ文字は無視されます。 | x in {string} |
[a] これらの関数で使用される非 ASCII 範囲文字または整数は、関数が評価される場所(Data Virtualization vs. source)に応じて異なる結果または例外を生成する場合があります。Data Virtualization は、UTF16 値で実行される Java のデフォルト int を使用して、char および char を int 変換に使用します。
[b] ソースに依存するサブ文字列関数には、負の引数/長さの引数に対する一貫した動作や、/length 引数のバインド外に関連する動作がありません。Data Virtualization のデフォルト動作は次のとおりです。
- from 値がバインド不足、または長さが 0 未満の場合は null 値を返します。
- インデックスのゼロは 1 と同じように有効です。
- インデックスから負の値は、最初に文字列の最後からカウントされます。
ただし、一部のソースは null
ではなく空の文字列を返すことができ、一部のソースは負のインデックスと互換性がありません。
TO_CHARS
指定されたエンコーディングでバイナリー大規模なオブジェクト(BLOB)から CLOB を返します。
TO_CHARS(x, encoding [, wellformed])
TO_CHARS(x, encoding [, wellformed])
BASE64、HEX、UTF-8-BOM、および組み込みの Java Charset 名はエンコーディング [b] の有効な値です。x は BLOB で、エンコーディングは文字列で、適切にフォームはブール値で、CLOB を返します。デフォルトでは、2 つの引数形式はデフォルトで wellformed=true に設定されます。適切な情報が false である場合、変換関数は即座に結果を検証し、不適切な文字や不正な入力で例外が発生します。
TO_BYTES
指定されたエンコーディングで CLOB から BLOB を返します。
TO_BYTES(x, encoding [, wellformed])
TO_BYTES(x, encoding [, wellformed])
BASE64、HEX、UTF-8-BOM、および組み込み Java Charset 名はエンコーディングの有効な値です [b]。CLOB の x は文字列で、エンコードはブール値で、BLOB を返します。デフォルトでは、2 つの引数形式はデフォルトで wellformed=true に設定されます。適切な情報が false である場合、変換関数は即座に結果を検証し、不適切な文字や不正な入力で例外が発生します。適切ではない文字が true の場合、文字セットのデフォルト置換文字に置き換えられます。BASE64 や HEX などのバイナリー形式は、適切なパラメーターに関係なく、正確性の有無がチェックされます。
[b] Charset 名の詳細は、Charset docs を参照してください。
REPLACE
指定の文字列のすべての出現箇所を別の文字列に置き換えます。
REPLACE(x, y, z)
REPLACE(x, y, z)
x で y のすべての出現箇所を z に置き換えます。x、y、z は文字列で、戻り値は文字列です。
REGEXP_REPLACE
特定のパターンの 1 つまたはすべての出現箇所を別の文字列に置き換えます。
REGEXP_REPLACE(str, pattern, sub [, flags])
REGEXP_REPLACE(str, pattern, sub [, flags])
str 内のパターンの 1 つ以上を sub に置き換えます。すべての引数は文字列で、戻り値は文字列です。
pattern パラメーターは有効な Java 正規表現であることが想定されます。
flags 引数は、以下の意味を持つ有効なフラグのいずれかを連結できます。
フラグ | 名前 | 意味 |
---|---|---|
g | グローバル | 最初のものだけではなく、すべての出現箇所を置き換えます。 |
m | 複数行 | 複数の行で照合します。 |
i | 大文字と小文字を区別しない | ケースの機密性なしで一致します。 |
使用方法
以下は、グローバルおよび大文字と小文字を区別しないオプションを使用して「xxbye Wxx」を返します。
regexp_replace の例
regexp_replace('Goodbye World', '[g-o].', 'x', 'gi')
regexp_replace('Goodbye World', '[g-o].', 'x', 'gi')