ZONED( ) 関数
数値データを文字データに変換し、出力の先頭にゼロを追加します。
構文
ZONED(数値, 長さ)
パラメーター
名前 | 種類 | 説明 |
---|---|---|
数値 |
数値 |
文字に変換する数値。 メモ 数字の文字列を含む文字値に先頭ゼロを追加する場合は、値を ZONED( ) の入力として使用する前に、VALUE( ) 関数を使用して文字を数値データ型に変換する必要があります。詳細については、VALUE( ) 関数を参照してください。 |
長さ | 数値 |
出力文字列の長さ。 |
出力
文字。
例
基本的な例
整数の入力値
"235" が返されます。
ZONED(235, 3)
次の例では、長さが数値の桁数より大きいので、先頭に 2 つのゼロが追加されて "00235" が返されます。
ZONED(235, 5)
次の例では、長さが数値の桁数より小さいので、左端の桁が切り詰められて "35" が返されます。
ZONED(235, 2)
小数の入力値
次の例では、ZONED データ型では小数点がサポートされないため、"23585" が返されます。
ZONED(235.85, 5)
負の入力値
次の例では、数値が負であるのと、右端の桁である 4 が "M" で表されるのとで、"64489M" が返されます。
ZONED(-6448.94, 6)
次の例では、長さが数値の桁数より小さいので左端の 2 桁が切り詰められるほか、数値が負であるのと、右端の桁である 1 が "J" で表されるのとで、"489J" が返されます。
ZONED(-6448.91, 4)
高度な例
数値を含む文字フィールドに先頭ゼロを追加する
Employee_Number フィールドには値 "254879" があります。値を先頭ゼロ埋めの 10 桁の文字列に変換する必要があります。
ヒント
VALUE( ) 関数を使用して文字を数値データに変換してから、ZONED( ) への入力値として数値を使用します。
COMMENT "0000254879" を返します ASSIGN v_str_length = 10 ASSIGN v_num_decimals = 0 ZONED(VALUE(Employee_Number, v_num_decimals), v_str_length)
テーブルを結合する際にキー フィールドを一致させる
2 つのテーブル、Ar と Customer がある場合に、これらを CustNo フィールドで結合してさらに分析する必要があるとします。これら 2 つのテーブルにはどちらにも CustNo フィールドがありますが、このフィールドのデータ書式が異なっています。
- Ar テーブルの CustNo フィールド 数値フィールド(値の例:235)
- Customer テーブルの CustNo フィールド 5 文字の文字フィールド。数値文字フィールドですが、1 ~ 9 でない先頭の桁にはゼロが追加されます("00235" など)。
結合を行う場合、データ型と長さが等しくなるようにフィールド同士を一致させるには、ZONED( ) 関数を使って Ar テーブルの CustNo キー フィールドを長さ 5 の文字フィールドに変換することで、その書式を Customer テーブルの CustNo キー フィールドの書式に一致させます。
OPEN Ar PRIMARY OPEN Customer SECONDARY JOIN PKEY ZONED(CustNo,5) FIELDS CustNo Due Amount SKEY CustNo UNMATCHED TO Ar_Cust OPEN PRESORT SECSORT
備考
機能の仕組み
この関数は数値データを文字データに変換し、先頭にゼロを追加して出力します。この関数は、小切手番号や、発注番号、請求書番号フィールドなどの、先頭にゼロを必要とするフィールドを一致させるためによく利用されます。
ZONED( ) の使用に適する場面
この関数は、正の数値を先頭にゼロを付けた文字値に変換する場合に使用できます。この関数は、キー フィールドとして使用されるフィールドのデータを正規化する場合に役立ちます。
たとえば、あるテーブルでは請求書番号は数値フィールドに 100 という形式で格納されており、別のテーブルでは文字フィールドに 00100 という形式で格納されているとします。ZONED 関数を使用して、数値 100 を文字値 00100 に変換できます。これで請求書番号を比較することができます。
文字列の長さと戻り値
長さが数値の桁数より大きい場合は、出力値の先頭にゼロが追加されます。長さが数値の桁数より小さい場合は、出力の左側から切り詰められます。数値と長さが同じ長さの場合、ゼロは追加されません。
10 進数
ZONED データ形式は明示的な小数点を含んでいません。
負の数値
入力値である数値が負の場合には、結果では右端の桁が文字として表示されます。
- 右端の桁が 0 の場合は、文字 "}" として表示
- 右端の桁が 1 ~ 9 の場合は、"J" ~ "R" の間の文字として表示
ZONED( ) と Unicode 版 Analytics
Unicode 版 Analytics を使用している場合、ZONED( ) 関数で返された値を正しく表示するには、BINTOSTR( ) 関数を使用する必要があります。また、ZONED( ) 関数の戻り値を別の関数のパラメーターとして使用する場合も、BINTOSTR( ) 関数を使用する必要があります。