文字ストリング式:
>>-TRANSLATE--(--char-string-exp--------------------------------> >-----+---------------------------------------------------------+> | .-,--' '-------. | '-,--to-string-exp--,--from-string-exp--+--------------+--' '-,--pad-char--' >----)---------------------------------------------------------><
漢字ストリング式:
>>-TRANSLATE--(--graphic-string-exp--,--to-string-exp--,--from-string-exp--> .-,--' '-------. >----+--------------+--)--------------------------------------->< '-,--pad-char--'
スキーマは SYSIBM です。
TRANSLATE 関数は、ストリング式内の 1 つまたは複数の文字が他の文字に変換された値を戻します。
関数の結果のデータ・タイプとコード・ページは、最初の引き数と同じです。 結果の長さ属性は、最初の引き数と同じになります。 指定した式のいずれかがヌル値 (NULL) の可能性がある場合、 結果も NULL の可能性があります。 指定した式のいずれかがヌル値 (NULL) の場合、 結果も NULL になります。
to-string-exp を指定せず、データ・タイプが漢字でない場合、 char-string-exp 内の文字すべてが大文字変換されます (つまり、 文字 a 〜 z は文字 A 〜 Z に変換され、 発音符付きの文字は大文字に相当するものがあればその文字に変換されます。 たとえば、コード・ページ 850 では、e は E に変換されますが、 Y は変換されません。 これは、コード・ページ 850 に &Ye. が含まれていないためです) 。
引き数には、データ・タイプ CHAR または VARCHAR のいずれかのストリングか、 あるいはデータ・タイプ GRAPHIC または VARGRAPHIC の漢字ストリングを指定できます。 データ・タイプ LONG VARCHAR、LONG VARGRAPHIC、BLOB、CLOB、 または DBCLOB は使用できません。
graphic-string-exp を指定する場合、 pad-char-exp だけが任意選択です (これを指定しない場合、 2 バイトのブランクが使用されます)。 埋め込み文字を含め、各引き数は漢字データ・タイプでなければなりません。
結果は、from-string-exp の中で出現する char-string-exp または graphic-string-exp 内の文字すべてを、 to-string-exp 内の対応する文字に変換した結果のストリング、 あるいは対応する文字がない場合は pad-char-exp で指定される埋め込み文字に変換した結果のストリングになります。
TRANSLATE の結果のコード・ページは、 常に最初のオペランドのコード・ページと同じになります。 最初のオペランドのコード・ページは、決して変換されません。 それ以外の各オペランドは、 最初のオペランドのコード・ページに変換されます。 ただし、そのオペランドまたは最初のオペランドが FOR BIT DATA として定義されている場合は、 変換されません。
引き数のデータ・タイプが CHAR または VARCHAR の場合、 to-string-exp と from-string-exp に対応する文字は、 同じバイト数でなければなりません。 たとえば、1 バイト文字をマルチバイト文字に変換することや、 マルチバイト文字を 1 バイト文字に変換することは無効です。 そのような変換を行うと、エラーになります。 pad-char-exp として有効なマルチバイト文字の第 1 バイトを指定することはできません。 そのように指定すると、SQLSTATE 42815 が戻されます。 pad-char-exp を指定しない場合は、 1 バイトのブランクが使用されます。
char-string-exp だけを指定した場合、 1 バイト文字は大文字変換され、マルチバイト文字はそのままになります。
例:
TRANSLATE(:SITE)
この例では、値 'HANAUMA BAY' を戻します。
TRANSLATE(:SITE 'j','B')
この例では、'Hanauma jay' が戻されます。
TRANSLATE(:SITE,'ei','aa')
この例では、値 'Heneume Bey' が戻されます。
TRANSLATE(:SITE,'bA','Bay','%')
この例では、値 'HAnAumA bA%' が戻されます。
TRANSLATE(:SITE,'r','Bu')
この例では、値 'Hana ma ray' が戻されます。