
ひらがなの氏名のはいった列(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の右側にカラムを指定でき...
-
アクセルでのクエリ
-
他のシートの検索
-
SELECT文で、指定カラム以外の...
-
DBの定義のサイズを大きくし過...
-
SQLServerでNULLを挿入したいです
-
INDIRECT関数の代替方法は?
-
一部のカラムでdistinctし全て...
-
自分自身のテーブルを参照して更新
-
UNIONする際、片方テーブルしか...
-
コンボボックスの抽出条件のLik...
-
SQLでカラムを追加し、条件に合...
-
【SQL】select に ワイルドカー...
-
GREATESTで NULLをスルーする方...
-
ドロップダウンリストの連動し...
-
WHERE句で結合。INNER JOINとの...
-
type date にnullをinsert
-
update時にtimestampが更新され...
-
AUTO_INCREMENTに0はダメ?
-
now()かCURRENT_TIMESTAMPか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースによる絞り込み検索をS...
-
LIKEの右側にカラムを指定でき...
-
mysqlで50音順にorder byしたい。
-
whereで全てを検索する方法
-
複数カラムに対するLIKE文の最適化
-
アクセルでのクエリ
-
End Ifに対応するIfブロックが...
-
PL/SQLでの文字列比較
-
Android javaで検索プログラム...
-
SQL文に間違いがありますでしょ...
-
WHERE `年月日` = '晴' OR `年...
-
MySQL 配列もどきを条件式に
-
複数条件による検索
-
SQL文
-
SQLステータス:37000について
-
部分一致検索ができなくて困っ...
-
社名でデータ抽出できる検索シ...
-
複数のフィールドの検索
-
MySQLで複数フィールドから同一...
-
4つのセルの文字列が全て一致...
おすすめ情報