各文字式には、文字セットと照合順序があります。
文字式の文字セットと照合順序を指定する
単純なステートメント SELECT 'string' の場合、この文字式のデフォルトの文字セットと照合順序は、システム変数 character_set_connection および collation_connection によって定義されます。
COLLATE 句を使用して、文字式の文字セットと照合順序を指定できます。構文は次のとおりです:
[_charset_name]'string' [COLLATE collation_name]
例:
obclient> SELECT _utf8mb4'abc' COLLATE utf8mb4_unicode_ci;
+------------------------------------------+
| _utf8mb4'abc' COLLATE utf8mb4_unicode_ci |
+------------------------------------------+
| abc |
+------------------------------------------+
1 row in set
SQLにおける定数の文字セットを指定する際、gb18030_2022 については、16進数の前に _gb18030_2022 を付加することで、そのエンコーディングを gb18030_2022 の対応する文字に変換できます。文字列の前に _gb18030_2022 を付加すると、その文字列の文字セットを gb18030_2022 と指定できます。
obclient> SELECT _gb18030_2022 0xCDE5 AS c FROM DUAL;
+-----+
| c |
+-----+
| 湾 |
+-----+
1 row in set
obclient> SELECT _gb18030_2022 '湾' AS c FROM DUAL;
+-----+
| c |
+-----+
| 湾 |
+-----+
1 row in set
文字式の文字セットと照合順序を選択する
OceanBaseデータベースは、次の方法で文字式の文字セットと照合順序を選択します:
_charset_nameとCOLLATE collation_nameの両方が指定されている場合、文字セットcharset_nameと照合順序collation_nameを使用します。_charset_nameが指定されているがCOLLATEが指定されていない場合、文字セットcharset_nameとそのデフォルトの照合順序を使用します。各文字セットのデフォルトの照合順序を確認するには、SHOW CHARACTER SETステートメントを使用してください。_charset_nameが指定されていないがCOLLATE collation_nameが指定されている場合、システム変数character_set_connectionとcollation collation_nameによって指定されたデフォルトの文字セットを使用します。collation_nameは、デフォルトの文字セットでサポートされている照合順序である必要があります。CHARACTER SETとCOLLATEの両方が指定されていない場合、システム変数character_set_connectionとcollation collation_nameによって指定されたデフォルトの文字セットを使用します。