これはdelphiに関することでなくFirebirdに関することかもしれませんが
よろしければどなたか教えてください。
データベースにFireBirdを用いデータベースファイルを作りました。データを
ア行、カ行、サ行という風に抽出したかったためSQL文を送って実現しようと思いました。ア行の抽出にはこのように書きました。
select * from <table> where namekana like '[ア-オ]%'
どうもこれが通らないようで、結果に何も出てきません。
人海戦術的に
select * from <table> where namekana like'ア%' or 'イ%' ... 'オ%'
とやるとうまくいきますがこれをワ行までやるとなると...
何かスマートな記述はないでしょうか。ゆくゆくは関数化して
ExtractWithKANA('ア')とやるとア行検索用の文字列が得られるようにと
考えているのですが。
Firebirdで正規表現だと
SIMILAR TO
http://www.firebirdsql.org/refdocs/langrefupd25-similar-to.html
とかですかね?とりあえずプログラムでではなく、
FlameRobin
http://osdn.jp/projects/sfnet_flamerobin/
のようなツールで色々試してみるといいんじゃないですか。あとFirebirdの質問は日本ユーザ会のMLのほうがいいかもしれません。
http://lists.osdn.me/mailman/listinfo/firebird-jp-general
から登録できます。
http://www.firebirdsql.org/refdocs/langrefupd25-similar-to.html
を参考にさせてもらいました。以下のスクリプトで通りました。
あ行抽出
select * from <table> where comkana similar to '[あ-お]%';
ついでに英数字抽出
select * from <table> where comkana similar to '[a-z]%' or
where comkana similar to '[0-9]%';
でできました。
firbirdは資料が少なそうだと思っていたのですが、本家の英語の資料にも
きちんと目を通さないといけませんね。ありがとうございました。
解決です。
ツイート | ![]() |