常用漢字データベースSQLの使い方
[ PR ]
先日、常用漢字SQLを公開しました。 という記事で、常用漢字データベースSQLを公開しました。
<i class="fa fa-github"></i> [常用漢字データベースSQL](https://gist.github.com/atmarksharp/8033466)
ただ、ダブルポストにならないように、こちらではこのデータベースの使い方を解説します。
配布物
今回配布しているのは、
- README.md
- create_jouyou_kanji.sql
- create_jouyou_kanji_reading.sql
の3種類です。README.mdにはライセンス形態が書いてあります。
create_jouyou_kanji.sql は jouyou_kanjiテーブル、create_jouyou_kanji_reading.sql は jouyou_kanji_readingテーブルを作成します。
SQLの導入
このSQLにはテーブル名は指定してあります。随時変更してもらってかまいません。
ただし、データベースは指定してないので、適宜設定します。
導入の方法は様々だと思いますが、レンタルサーバなどで一般的なのは、phpMyAdminからインポートするという方法です。
この方法は割愛しますので、[http://www.dbonline.jp/mysql/:title] や [http://www.dbonline.jp/phpmyadmin/:title] を参照してください。
使い方
では、インストールが済んだとして、どういう風に使うのかを説明します。
常用漢字テーブル (jouyou_kanji)
まず、jouyou_kanjiテーブルのみを使ってみます。
SELECT
IF(count(*) > 0, 'true', 'false') as exists
FROM
jouyou_kanji
WHERE
kanji = '赤'; /* あまり良くない */
これが基本的な使い方ですが、kanjiカラムにはインデックスが付与されていないので、utf(UTF-16)を使うのがおすすめです。
SELECT
IF(count(*) > 0, 'true', 'false') as exists
FROM
jouyou_kanji
WHERE
utf = '8d64'; /* インデックスが効くので良い */
漢字からUTF-16に変換する方法は言語によって違いますが、Rubyでは次のようになります。
def utf16_encode(s) # '赤' => '8d64'
s.unpack("U*")[0].to_s(16)
end
def utf16_decode(s) # '8d64' => '赤'
[s.hex].pack("U*")
end
PHPではこうです。
<?php
function utf16_encode($s) { // '赤' => '8d64'
unpack('H*',mb_convert_encoding($s,'UTF16','UTF8'));
}
function utf16_decode($s) { // '8d64' => '赤'
mb_convert_encoding(pack('H*',$s),'UTF8','UTF16');
}
?>
UTF-16に限ったことではないですが、文字コードの変換はトラブルが起こりやすいので注意して下さい。
常用漢字読み方・熟語テーブル (jouyou_kanji_reading)
次はjouyou_kanji_readingテーブルです。
このテーブルの使い方は次の通りです。
SELECT
id, utf, reading, example, type
FROM
jouyou_kanji_reading
WHERE
utf = '8d64';
これだけです。わざわざカラムを明記しましたが、注意として以下の2点があります。
- 結果は複数帰ってくる場合がある
- typeは訓読みか音読みかをを示す (0 or 1)
何故かと言うと、訓読みと音読みが別々のレコードになっており、さらに訓読みが複数ある場合があるからです。
これを押さえておけば、あとは jouyou_kanji テーブルと組み合わせれば完璧です。
SELECT
j.kanji, j.utf, jr.reading, jr.example, jr.type
FROM
jouyou_kanji j, jouyou_kanji_reading jr
WHERE
1 /* インデントを揃えるため */
AND j.utf = '8d64'
AND j.utf = jr.utf;
これで実用的なSQLになりました。あとは適宜自由に使って下さい。
まとめ
今回は常用漢字データベースSQLの使い方を解説しました。
常用漢字は年々改定されるので、データベースを更新するのがちょっと面倒ですね。
翔泳社
売り上げランキング: 4,133