
ひらがなの氏名のはいった列(kana)を
mysql> select kana from personal order by kana;
としますが、あいうえお順にならびません。
mysql> select kana from personal order by binary kana;
とするとちゃんと並びますが。。
[あ行][か行]とクエリーをしたいので下記のようなSQLを
PHPに入れています。
SELECT * FROM personal WHERE kana between 'あ%' and 'お%' or kana = 'お%' ORDER BY binary kana asc
しかしながら、この場合は、もともと あいうえお順にならんで
ないので [ら行]とか検索できません。
なにか方法は 無いでしょうか??
文字コード自体をbinaryにしようと思い 下記のとおりしましたが、
# cat my.cnf
[mysqld]
default-character-set = binary
character-set-server= binary
language=/usr/share/mysql/japanese
[mysql.server]
default-character-set = binary
-------------------------------------------
確認すると
mysql> \set
Server characterset: binary
Db characterset: latin1
Client characterset: binary
Conn. characterset: binary
になっています。 併せて [Db characterset]の変更方法も教えてください
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
MySQLのバージョンは何ですか?
OSは何ですか?
日本語を扱うのに、日本語を扱える文字コードにしない理由は、何かあるのですか?
>SELECT * FROM personal WHERE kana between 'あ%' and 'お%' or kana = 'お%' ORDER BY binary kana asc
betweenで前方一致は使えません。
likeをorで並べたり、substrを使ったりといった方法になると思います。ただし、substr等を使い列を加工すると、MySQLはインデクスを使ってくれません。
SELECT * FROM personal WHERE substr(kana,1,1) between 'あ' and 'お' ORDER BY binary kana asc
この回答への補足
MySQLのバージョンは何ですか? 4.1です
OSは何ですか? RedHadLinux ES 4.0です。
下記のとおりで うまくいきました。
SELECT * FROM personal WHERE binary kana between 'あ%' and 'お%' or binary kana like 'お%' ORDER BY binary kana asc
No.1
- 回答日時:
>[あ行][か行]とクエリーをしたい
あ行とか行を検索するのですか?
SELECT *
FROM personal
WHERE 1
and kana like 'あ%'
or kana like 'い%'
or kana like 'う%'
or kana like 'え%'
or kana like 'お%'
or kana like 'か%'
or kana like 'き%'
or kana like 'く%'
or kana like 'け%'
or kana like 'こ%'
ORDER BY binary kana asc
とかでどうでしょ?
先頭一致なら正規表現でもいけるかも
SELECT *
FROM personal
WHERE 1
and kana regexp '^あ|^い|^う|^え|^お|^か|^き|^く|^け|^こ'
ORDER BY binary kana asc
いちおう正規表現は完全には日本語に対応してないみたいです。
それとkana regexp '^[あ-こ]'なんてやり方はだめみたいですね。
もちろん、「ぁぃぅぇぉ」や「がぎぐげご」などをどう見るかによっても
処理がかわってきます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数カラムに対するLIKE文の最適化
-
INDIRECT関数の代替方法は?
-
DBの定義のサイズを大きくし過...
-
構造が異なる二つのテーブルをu...
-
カラムとコラムの使い分け
-
他のシートの検索
-
UNIONする際、片方テーブルしか...
-
インデックスについて
-
type date にnullをinsert
-
ホームページを作ろうと思いま...
-
AUTO_INCREMENTに0はダメ?
-
Accessで複数(3以上)...
-
GREATESTで NULLをスルーする方...
-
now()かCURRENT_TIMESTAMPか
-
テーブルの列数を調べたい
-
ROUND関数で、四捨五入ができな...
-
BULK INSERT時のNull許容について
-
ドロップダウンリストの連動し...
-
MySQL(5.5)1テーブル内のカラ...
-
【SQL】select に ワイルドカー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
mysqlで50音順にorder byしたい。
-
End Ifに対応するIfブロックが...
-
スペースによる絞り込み検索をS...
-
複数キーワードを複数カラムに...
-
WHERE `年月日` = '晴' OR `年...
-
場合の数 中学入試 5枚のカード
-
whereで全てを検索する方法
-
複数条件による検索
-
LIKE演算子の%について教えて...
-
複数カラムに対するLIKE文の最適化
-
MySQLのあいまい検索について
-
4つのセルの文字列が全て一致...
-
Accessで文字列の一部を抽出す...
-
SQLで条件の文字列を含んでいる...
-
PL/SQLでの文字列比較
-
SQLステータス:37000について
-
社名でデータ抽出できる検索シ...
-
前と後という言葉の意味
-
Access & ADOで「'」のLIKE検索
おすすめ情報