• 締切済み

mysqlで50音順にorder byしたい。

ひらがなの氏名のはいった列(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]の変更方法も教えてください

みんなの回答

回答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

kokudakumi
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答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

  • MySQL5.0の文字コードが変更できずに困っています。

    MySQL5.0の文字コードが変更できずに困っています。 環境は全てWindowsXPのローカルで動かしています。 インストール直後、statusコマンドで確認したところ、 Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 となっていました。 次に、C:\Program Files\MySQL\MySQL Server 5.0内のmy.iniを [client] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis [mysqld] default-character-set=sjis としてMySQLを再起動してみたのですが、 Server characterset: latin1 Db characterset: latin1 Client characterset: sjis Conn. characterset: sjis で、ServerとDbが変わらず、このままではINSERT文などで日本語をいれることが出来ません。 どなたかご教示お願いします。

    • ベストアンサー
    • MySQL
  • 五十音順

    テーブルのフィールドに、読み仮名が入っています。 あ行、か行など、五十音順に抽出する場合のSQL文ですが、 $sql = 'select * from テーブル名 where kana between "あ" and "お" order by kana'; 上記の文を $sql = 'select * from テーブル名 where kana between "$key[$i]" order by kana'; という具合に配列などに入れたいと考えておりますが。 そのようなことは可能なのでしょうか? それとも、もっと効率よく五十音順の検索ができるようにする方法が ありますでしょうか?

  • mysqlの文字コードの変更方法について教えてください。

    /etc/my.cnfの[mysqld]と[mysql]にdefault-character-set = utf8を 追記したのですが、statusで確認すると Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 とサーバー側の文字コードが変更できていません。 ネットや本で調べてみたのですがわからず、困っております。 どなたか分かる方よろしくお願いいたします。

  • MySQLの文字コード変換

    XAMPP 1.7.1をダウンロードしてMySQL5.1.33をいじってるんですが defaultの文字コードをlatin1からutf8への変更がどうしてもできません。 \XAMPP\mysql\binにあるmy.iniに以下の記述をしました。 [client] default-character-set=utf8 [mysqld] default-character-set=utf8 skip-character-set-client-handshake [mysqldump] default-character-set=utf8 [mysql] default-character-set=utf8 ネットで調べると以上の方法で解決できるとなっていたんですが記述後、再起動してstatusをしてもServer characterset,Db characterset,Client characterset,Conn. charactersetすべてlatin1のままです。 どなたか解決できる方がいましたら是非ともご教授ねがいます。

    • ベストアンサー
    • MySQL
  • MySQL4.1における文字化けについて

    WindowsXPにてMySQL4.1.12aをインストールしました。 JDBCにて、 Class.forName("com.mysql.jdbc.Driver").newInstance(); String connStr = "jdbc:mysql:///databasename?user=root&password=pass" + "&useUnicode=true&characterEncoding=Shift_JIS"; とし、insertでCSVファイルから特定の項目を追加していくということをしました。 clientにてselectしてみたら、2バイト文字がすべて 「?」に変わっていました。 my.iniにて [mysqld] default-character-set = sjis [client] default-character-set = sjis [mysql] default-character-set = sjis を追加していますが、 statusで見ると mysql> status -------------- mysql Ver 14.7 Distrib 4.1.12a, for Win32 (ia32) Connection id: 1 Current database: shop Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 4.1.12a-nt Protocol version: 10 Connection: localhost via TCP/IP Server characterset: sjis Db characterset: utf8 Client characterset: latin1 Conn. characterset: latin1 TCP port: 3306 Uptime: 30 sec となっています。 utf8、latin1というのが文字化けの原因でしょうか。 対策方法をご教授お願いいたします。

    • ベストアンサー
    • MySQL
  • GROUP BY と、ORDER BY

    ACCESS97を使用しています。 SQLで、GROUP BY と、ORDER BYの両方を使用することは可能でしょうか? Set DB = CurrentDb() strSQL = "SELECT 製造番号 FROM 入庫データ WHERE " strSQL = strSQL + "整理NO='" & Me.整理NO入力 & "'" strSQL = strSQL + "GROUP by 製造番号" & ";"      ← ※ 'strSQL = strSQL + "ORDER by 製造番号" & ";" ※部分に入れる記号がわかりません。 ' ? ,?それとも順序が違うのでしょうか?

  • mysql order by のNULLについて

    mysql order by のNULLについて テーブル tb1 memberid 2   2 cardid  1   1 name 田中  井岡 day 2016.4.10  2016.4.22 new  New NULL ソース SELECT memberid,cardid,max(name),max(day),max(new) FROM tb1 WHERE memberid=2 GROUP BY cardid ORDER BY max(day) DESC LIMIT '.$limit.' OFFSET '.$offset; すると max(new)の部分が Newと出てきます。 max(new)なのでNULLが出てくると思っていました。 NULLにしたいのですが 名前も井岡ではなく田中がでてきます max(day)をオーダーしているので新しい日の情報が出てくると思っていましたが。。。。 何か SQLの書き方に問題があるのでしょうか それともこのテーブルの作りでは不可能なのでしょうか? 無知な私に ご教授お願いいたします。

    • ベストアンサー
    • MySQL
  • MySQLのClient characterset

    MySQLの文字コードについて、質問2点あります 環境は、Windows7 ・MySQLサーバのバージョン: 5.5.8 ・MySQL クライアントのバージョン: mysqlnd 5.0.7-dev - 091210 <質問1> skip-character-set-client-handshakeせずに、 MySQLのClient charactersetを、utf8にしたいのですが、 my.iniへ、 [mysql] default-character-set=utf8 [client] default-character-set=utf8 と追記しても、 statusで確認すると、 Client characterset: cp932 と表示されてしまいます。 skip-character-set-client-handshakeと書かずに、 Client characterset: utf8 とするには、どうすればよいでしょうか。 <質問2> Client characterset: cp932のメリットについて Client charactersetを、 utf8じゃなくて、cp932にするメリットとしては、 何があるのでしょうか? コマンドラインで日本語表示できることぐらいしか思いつかないのですが… そもそも、「MySQLのClient characterset」の意味がよく分かっていないので、 教えてください

    • ベストアンサー
    • MySQL
  • sqlでのORDER BYについて

    SQL初心者です。 MySQLを使用しています。 SELECT文で、ORDER BYを2つ指定したいのですが、ORDER BYの複数指定方法が分かりません。 どなたかご教授お願いします。

  • XAMPPでMySQLで文字化け、文字コード設定について

    MySQLの文字セット: UTF-8 Unicode (utf8)が変更できない。(できればSJISにしたい) 環境: OS:WinXP XAMPP1.6.6 * Apache 2.2.8 + OpenSSL 0.9.8g * MySQL 5.0.51 * PHP 5.2.5 & PHP 4.4.8 (RC2) * phpMyAdmin 2.11.4 症状: コマンドラインから作った全角文字を含む簡易テーブルについて。 ブラウザからphpMyAdminで確認すると文字化けせず読めるが、 DOSからコマンド"select"で確認すると文字化けしてしまう。 DOS窓からコマンド入力で簡単なテーブルsampleを作る。 東京,tokio Kanagawa,kanagawa とうきょう,tokio mysql> select * from sample; +------------+----------+ | ken | kencho | +------------+----------+ | | tokio | | Kanagawa | kanagawa | | ニ、ォ、 | tokio | +------------+----------+ mysql> status Server characterset: sjis Db characterset: sjis Client characterset: sjis Conn. characterset: sjis mysql> show variables like '%char%'; +--------------------------+-----------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | sjis | | character_set_filesystem | binary | | character_set_results | sjis | | character_set_server | sjis | | character_set_system | utf8 | | character_sets_dir | _xampp_mysql_share_charsets_ | +--------------------------+-----------------------------------+ character_set_systemだけがutf8なのは何故でしょうか? 編集したファイル: <my.ini(C:\WINDOWS)> [mysqld] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis <my.cnf(C:\xampp\phpMyAdmin)>(短縮ダイヤル) default-character-set=sjis init-connect=SET NAMES sjis <config.inc.php(C:\xampp\phpMyAdmin)> $cfg['DefaultLang'] = 'ja-sjis'; $cfg['Lang'] = 'ja-sjis'; $cfg['DefaultCharset'] = 'ja-sjis'; 結果: とりあえず調べた事をファイルに反映させてみましたが、 DOSプロンプトからselect文を実行すると全角文字が読めません。 どうすれば読めるようになりますか? character_set_system utf8を変更するのでしょうか? "http://www.oji.ath.cx/sb/log/eid11.html"を参考にさせて頂きましたが、character_sets_*の意味がいまいち分かりません。 こちらも分かれば教えて頂きたいと思います。 宜しくお願いします。

    • ベストアンサー
    • MySQL
産休、育児休業について
このQ&Aのポイント
  • 今年の5月1日で転職して1年経ちます。現在妊娠9週で出産予定日が10月中旬予定です。仕事は出産後も続けたく思っています。
  • まだ職場の方には誰にも伝えていない状況です。今産休や育休の話を上司の人たちに話すと育休もらえないでしょうか。(4月に話をしたら勤続年数が一年未満なので)つわりで体調も悪くどのタイミングで伝えようか迷っています。
  • 出産予定日から考えると勤続年数1年過ぎてても、妊娠した時期に一年未満やったら育休もらえないとかあるのでしょうか、、?また、産休、育休の申請はみなさんいつ頃からしましたか?教えていただけると助かります。よろしくお願いします。
回答を見る