TRANSLATE スカラー関数
TRANSLATE 関数は、最初の引数の 1 つ以上の文字が他の文字に変換されている場合がある値を戻します。
スキーマは SYSIBM です。
- 文字列式
- 変換対象のストリングを指定する式。 string-expression は、LOB を除く組み込みの文字ストリング・データ・タイプ、またはグラフィック・ストリング・データ・タイプの値を戻す必要があります。 string-expression が EBCDIC グラフィック・ストリングまたは ASCII グラフィック・ストリングであり、
string-expression が唯一指定された引数である場合、
CURRENT LOCALE LC_CTYPE 特殊レジスターによって指定されるロケール名は非ブランク・ストリングでなければなりません。
引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。
- to-string
- string-expression 内にある変換対象文字を変換する文字を指定する式。 このストリングは出力変換表 といわれることもあります。 to-string は、LOB を除く組み込みの文字ストリング・データ・タイプ、またはグラフィック・ストリング・データ・タイプの値を戻す必要があります。
引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。
to-string の長さが from-string の長さより短い場合 、to-string には、from-string の長さになるまで pad またはブランクが埋め込まれます。 to-string の長さが from-string より長い場合 、to-string 内の余分な文字は警告なしに無視されます。
- 文字列から
- string-expression 内で検出されたら、変換される文字を
指定する式。 このストリングは入力変換表 といわれることもあります。 from-string 内の文字が検出されると
、string-expression 内のその文字は、from-string 内の
文字に対応する位置にある、to-string 内の文字に変換されます。
from-string は、LOB を除く組み込みの文字ストリング・データ・タイプ、またはグラフィック・ストリング・データ・タイプの値を戻す必要があります。
引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。
from-string に重複文字が含まれている場合、最初の文字が使用され、 警告は出されません。 from-string のデフォルト値は、文字 X'00' で開始し、文字 X'FF' で終了するストリング (10 進の 255) です。
- パッド
- to-string の長さが from-string より短い 場合に埋め込む文字を指定する式。 パッド は、LOB 以外の組み込みの文字ストリング・データ・タイプまたはグラフィック・ストリング・データ・タイプで、長さが 1 の値を戻す必要がある式です。 長さ 1 は、文字ストリングの場合は 1 つの 1 バイト、GRAPHIC ストリングの場合は 1 つの 2 バイト・ストリングです。 デフォルトは、string-expression に該当するブランクです。
ストリング式 が指定された唯一の引数である場合、ストリングは、CURRENT LOCALE LC_CTYPE 特殊レジスターによって指定されたロケール名に基づいて、以下のように大文字に変換されます。
- ブランク
- SBCS の小文字 a から z は SBCS の大文字 A から Z に変換され、発音区別符号付きの文字は変換されません。 ストリングに MIXED 文字または DBCS 文字が 含まれている場合、全角の小文字 a から z は全角のローマ字大文字 A から Z に変換されます。 パフォーマンスを最適にするために、特定のロケールで定義された規則を使用してデータを処理しなければならない場合を除いて、ブランク・ストリングを指定してください。
- UNI
- 変換では 、[変換の選択] で説明されているように、標準および特殊文字のケース変換機能の両方が使用されます。 string-expression が EBCDIC データである場合は、UNI を指定できません。
UNI_90
変換には、Unicode Standard 9.0.0 と、大文字・小文字の区別機能 (「変換の選択」で説明)を使用します。 文字列表現がEBCDICデータの場合、 UNI_60 を指定してはいけません。
UNI_90
変換には、Unicode Standard 6.0.0 と、大文字・小文字の区別機能 (「変換の選択」で説明)を使用します。 文字列表現がEBCDICデータの場合、 UNI_90 を指定してはいけません。
- UNI_SIMPLE
- ケース変換は 、選択した変換で説明されているように、標準の大文字・小文字変換機能を使用します。 UNI_SIMPLE は EBCDIC データでは使用できません。
- ロケール名
- ロケールは、大文字への変換の規則を定義します。
Unicode データの場合、TRANSLATE 関数 (1 つの引数を指定した TRANSLATE 関数は UPPER 関数と同じ) の使用により特定の文字を処理すると拡張することになる場合があります。 結果のストリングがこの式の結果を収容するのに十分な大きさであることを必ず確認してください。
複数の引数が指定された場合、結果の文字列は、string-expression から1つずつ構築されます。 ストリング式 が CHAR または VARCHAR の場合、断片は 1 バイトの長さです。 文字列表現が GRAPHIC または VARGRAPHIC の場合、ピースは2バイト長です。 
文字列式の各要素について、同じ要素がfrom-stringから検索されます。 

- ストリング式 内の部分が 変換元ストリング内の部分と一致し、変換先ストリング内に対応する部分がある場合、変換先ストリング 内のその部分は結果ストリングに移動されます。 ストリング式 内の部分が 変換元ストリング内の部分と一致するが、変換先ストリング内に対応する部分がない場合、パッド は結果ストリングに移動されます。
- ストリング式 内の断片が 変換元ストリング内のどの断片とも一致しない場合、string-expression 内の断片は結果ストリングに移動されます。

ストリングには混合データが入っていてもかまいません。 引数を 1 つだけ指定すると、UPPER 関数はその引数に対して実
行され、UPPER 関数での混合データの演算の場合と同じ規則が適用されます。 全角のローマ字小文字 a から z は、全角のローマ字大文字 A から Z に変換されます。 複数の引数が指定されている場合、関数は CHAR および VARCHAR データについて前述したように動作します。 結果は、必ずしも正しい形式の混合データ文字ストリングではありません。
結果のコード化スキームは、string-expression と同じです。 関数の結果のデータ・タイプは、string-expression、to-string、from-string、および pad のデータ・タイプによって次のように決まります。
- string-expression が文字ストリングであれば VARCHAR。 結果の CCSID は、引数によって次のように決まります。
- string-expression、to-string、from-string、または pad がビット・データであれば、結果はビット・データ。
- string-expression、to-string、from-string、および pad がすべて SBCS であれば、次のとおり。
- string-expression、to-string、from-string、および pad がすべて SBCS Unicode データであれば、結果の CCSID は SBCS Unicode データの CCSID。
- string-expression が SBCS Unicode データであり、to-string 、from-string、または pad が SBCS Unicode データでなければ、結果の CCSID は Unicode データの混合 CCSID。
- それ以外の場合、 結果の CCSID は string-expression の CCSID と同じです。
- それ以外の場合、結果の CCSID は string-expression の CCSID に対応する混合 CCSID。 ただし、入力が EBCDIC または ASCII で、混合に対応するシステム CCSID がない場合、結果の CCSID は string-expression の CCSID。
- string-expression がグラフィックであれば VARGRAPHIC。 結果の CCSID は source-string の CCSID と同じです。
結果は NULL になる可能性があります。第 1 引数が NULL の場合、結果は NULL 値となります。
例
- 例 1
- ストリング「abcdef」を大文字で返します。 有効なロケールがブランクであると仮定します。
結果の値は、「ABCDEF」です。SELECT TRANSLATE ('abcdef') FROM SYSIBM.SYSDUMMY1 - 例 2
- ホスト変数 サイト のデータ・タイプが VARCHAR (30) であり、「Hanauma Bay」が含まれているとします。
上記のステートメントは値「HANAUMA BAY」を戻します。 1 つの引数しか指定していないので、結果はすべて大文字になります。SELECT TRANSLATE (:SITE) FROM SYSIBM.SYSDUMMY1
上記のステートメントは値「Hanauma jay」を戻します。SELECT TRANSLATE (:SITE, 'j', 'B') FROM SYSIBM.SYSDUMMY1
上記のステートメントは値「Heneume Bey」を戻します。SELECT TRANSLATE (:SITE, 'ei', 'aa') FROM SYSIBM.SYSDUMMY1
上記のステートメントは値「HAnAumA bA%」を戻します。SELECT TRANSLATE (:SITE, 'bA', 'Bay', '%') FROM SYSIBM.SYSDUMMY1
値「Hana ma ray」を戻します。SELECT TRANSLATE (:SITE, 'r', 'Bu') FROM SYSIBM.SYSDUMMY1 - 例 3
- ホスト変数 サイト のデータ・タイプが VARCHAR (30) であり、「Pivabiska Lake Place」が含まれているとします。
上記のステートメントは値「Pivabiska $ake P$ace」を戻します。SELECT TRANSLATE (:SITE, '$$', 'Ll') FROM SYSIBM.SYSDUMMY1
値「pivAbiskA LAk」を戻します。 pLA..'.SELECT TRANSLATE (:SITE, 'pLA', 'Place', '.') FROM SYSIBM.SYSDUMMY1
