キーフィールドの操作にNを指定して、英字と数字の連結データを並べ換える場合、以下の注意が必要です。
キーフィールドの指定例1
キーフィールドの操作にNを指定して英字と数字の連結データを並べ換える場合、数字部分の並びは数値の大小だけを比較します。
したがって、以下のようなデータでは出力される順序が特定できません。
0.9ascaN
入力データ | 出力結果のケース1 | 出力結果のケース2 |
---|---|---|
data001 | data001 | data00001 |
data2 | data00001 | data1 |
data1 | data1 | data001 |
data00001 | data2 | data2 |
ポイント
数字部分の“1”、“001”、および“00001”は、どれも1という値のため、data1、data001、およびdata00001は全て同一のキーと判断されます。先入力先出力(FIFO)機能オプション(fifo(-option)、または-f)を指定している場合は入力順を保って出力されますが、先入力先出力(FIFO)機能オプション(fifo(-option)、または-f)の指定がない場合は、上記の出力結果のケース1、ケース2にあるように出力順は不定となります。
キーフィールドの指定例2
キーフィールドの指定例1に対して、数字部分の桁数も考慮して並べ換えたい場合は、以下のように指定します。
0.9ascaN0.9ascr
入力データ | 出力結果 |
---|---|
data001 | data1 |
data2 | data001 |
data1 | data00001 |
data00001 | data2 |
ポイント
以下の順で出力順が決まります。
第1キー(0.9ascaN)の比較により、data001、data1、およびdata00001とdata2の順序が決まります。第1キーの比較によって大小関係が確定したdata2については、以降の第2キーによる比較は行われません。
data001、data1、およびdata00001は、キーの値が等しいため、第2キー(0.9ascr)で比較します。
第2キーは文字列として比較し、大きい順に並べます。この例では、dataの次の文字で最初の大小関係が決まります。したがって、data1がdata001、およびdata00001よりも大きい値となり、最初に出力されます。同様にdata001とdata00001ではdata001の1の部分がdata00001では0なので、data001が大きい値と判断され、2番目に出力されます。残ったdata00001と既に順序が決定したdata2が順に出力され、上記の出力結果が得られます。