National Character Setとは

JDBC 4.0でPreparedStatementインタフェースとResultSetインタフェースに"National Character Set"関連の仕様追加により結構な数のメソッドが追加になっており,これを調べようと思ったのですが,この"National Character Set"が何なのかというのがまず良く分からず,それをSQL2003を引っ張り出してきて調べたりしていました.

しかしMySQLリファレンスマニュアルで"各国キャラクタセット"と和訳されているこの"National Character Set"ですが,結局の所一言で言ってしまうと「文字列型カラムのキャラセットを指定する際,RDBMS実装の既定のキャラセットをそこに使用する」ということのようですね.要するにMySQLの場合は以下の2つの宣言が同じ意味であると.

CHAR(10) CHARACTER SET utf8
NATIONAL CHARACTER(10)

ただのエイリアスです.ひとりで騒いでしまいました.orz

mysql> create table t1 (c1 national character(10));
Query OK, 0 rows affected (0.05 sec)

mysql> show create table t1\G
 *************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `c1` char(10) character set utf8 default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.02 sec)

"National Character Set"の"National"はマーケティング用語でいうところの"ナショナルブランド"のNationalと同じ意味だったわけですね.