ひらがなの氏名のはいった列(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で質問しましょう!
似たような質問が見つかりました
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
直角三角形でもM、NはOと一致し...
-
WHERE `年月日` = '晴' OR `年...
-
PL/SQLでの文字列比較
-
LIKEの右側にカラムを指定でき...
-
whereで全てを検索する方法
-
End Ifに対応するIfブロックが...
-
スペースによる絞り込み検索をS...
-
複数カラムに対するLIKE文の最適化
-
mysqlで50音順にorder byしたい。
-
一部のカラムでdistinctし全て...
-
INDIRECT関数の代替方法は?
-
GREATESTで NULLをスルーする方...
-
テーブルの列数を調べたい
-
SQLServerでNULLを挿入したいです
-
ROUND関数で、四捨五入ができな...
-
DBの定義のサイズを大きくし過...
-
ドロップダウンリストの連動し...
-
now()かCURRENT_TIMESTAMPか
-
AUTO_INCREMENTに0はダメ?
-
sql , insert で空行(全ての列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
私は相手の言葉と行動が一致し...
-
mysqlで50音順にorder byしたい。
-
スペースによる絞り込み検索をS...
-
whereで全てを検索する方法
-
複数カラムに対するLIKE文の最適化
-
End Ifに対応するIfブロックが...
-
PL/SQLでの文字列比較
-
複数キーワードを複数カラムに...
-
SQLステータス:37000について
-
LIKE演算子の%について教えて...
-
Accessで文字列の一部を抽出す...
-
キーワード \\P が部分一致で...
-
社名でデータ抽出できる検索シ...
-
SELECT、特定カラムの文字列が...
-
MySQLのあいまい検索について
-
以下の式の後の部分のMySQLのSQ...
-
エクセルで2つのセルの値が同じ...
-
MySQLで住所テーブルのLIKE検索で
-
複数のフィールドの検索
おすすめ情報