実行エンジンの動作

データの照合順序

Shift-JISとUnicodeは、格納される文字コードが異なりますので、それぞれをキー項目としたデータの処理順序が異なることにより、プログラムの範囲抽出処理やバッチのグループ処理に影響がでる可能性があります。
また、SQLデータベースを利用する場合は、そのデータベースマネージャ固有の機能や設定による影響があります。

文字コードを比較した場合の文字種類別の順序は次の通りです。

Shift-JIS(文字型項目)のコード順序

Unicode(Unicode型)のコード順序

1.半角数字

1.半角数字

2.半角英

2.半角英

3.半角カナ

3.ひらがな

4.全角数字

4.カタカナ

5.全角英

5.漢字

6.ひらがな

6.全角数字

7.カタカナ

7.全角英

8.漢字

8.半角カナ

漢字については、個々の漢字のコード順序が異なります。 例えば、「亜」と「一」ではShift-JISとUnicodeで、次のようにコードの順序が異なります。

 

結果

Shift-JIS

0x889F

0x88EA

亜が一より先

Unicode

U+4E9C

U+4E00

一が亜より先

関数

文字列をパラメータに持つ関数に対して、文字型項目とUnicode型項目を設定した場合の戻り値は次のようなルールがあります。

*1 式に直接、'あいうえお'などの文字列を指定する場合

ただし、IF関数およびCASE関数では、以下の扱いになります。

関数を組み合わせて使用した場合には、それぞれの関数について上記のルールが適用されます。

例1. Len関数

文字列の長さを数える関数
書式: 戻り値 = Len(文字列)

例2. MID関数

文字列の中から、指定された位置とサイズにあった文字列を取得する関数
書式: 文字の戻り値 = MID(文字列, 開始位置, 文字数)

#

パラメータの型

戻り値の型

戻り値の結果

1

文字型

文字型

バイト単位に取得

2

文字型

Unicode型

バイト単位に取得

3

Unicode型

文字型

文字単位に取得

4

Unicode型

Unicode型

文字単位に取得

5

文字定数

文字型

バイト単位に取得

6

文字定数

Unicode型

文字単位に取得

例3. Rep関数

文字列中の位置と文字数を指定し、その部分を別の文字列に置き換える関数
書式: 文字の戻り値 = Rep(文字列1, 文字列2, 位置, 文字数)

#

パラメータ1の型

パラメータ2の型

戻り値の型

戻り値の結果

1

文字型

文字型

文字型

バイト単位に取得

2

文字型

文字型

Unicode型

バイト単位に取得

3

文字型

Unicode型

文字型

文字単位に取得

4

文字型

Unicode型

Unicode型

文字単位に取得

5

Unicode型

文字型

文字型

文字単位に取得

6

Unicode型

文字型

Unicode型

文字単位に取得

7

Unicode型

Unicode型

文字型

文字単位に取得

8

Unicode型

Unicode型

Unicode型

文字単位に取得

9

文字型

文字定数

文字型

バイト単位に取得

10

文字型

文字定数

Unicode型

バイト単位に取得

11

Unicode型

文字定数

文字型

文字単位に取得

12

Unicode型

文字定数

Unicode型

文字単位に取得

13

文字定数

文字型

文字型

バイト単位に取得

14

文字定数

文字型

Unicode型

バイト単位に取得

15

文字定数

Unicode型

文字型

文字単位に取得

16

文字定数

Unicode型

Unicode型

文字単位に取得

 

Rep ('あいうえお',MID('かきくけこ',3,2),3,2)の結果をUnicode型項目に格納する場合、以下のように処理されます。

  1. まず、MID('かきくけこ',3,2)について、文字型/Unicode型の判定が行われます。

  2. パラメータ数がカウントされ、文字型 = 0個、Unicode型 = 0個 となります。戻り値の型にあわせて、Unicode型が返されます。

  3. MID関数の結果(Unicode型)がRep関数のパラメータとなります。

  4. 次に、Rep ('あいうえお',Unicode型,3,2)について、文字型/Unicode型の判定が行われます。

  5. パラメータ数がカウントされ、文字型 = 0個、Unicode型 = 1個 となります。これにより、Unicode型が返されます。

その他の関数の留意事項

その他

リッチクライアントタスクの場合

リッチクライアントタスクで、クライアント側で関数が評価される場合には、Unicodeでの比較を基本とし、簡単化した次のルールが適用されます。