sql >> データベース >  >> RDS >> Mysql

UTF-8で大文字と小文字を区別せずアクセントを区別しないMySQLの動作方法

    検索と順序付けにアクセントに依存しない照合を使用しようとしました。

    http://dev.mysql.com/doc /refman/5.0/en/charset-collat​​ion-implementations.html

    重要なのは、あなたのNAME 列はlatin1(8ビット)文字セットで格納されているようです。そのため、mySQLは次のように不平を言っています:

      COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
    

    試してみると、思い通りの結果が得られるかもしれません

     WHERE CONVERT(p.NAME USING utf8) LIKE _utf8 '%jose%' COLLATE utf8_general_ci;
    

    ただし、注意してください!

    WHEREステートメントの列で任意の種類の関数(この例ではCONVERT)を使用すると、MySQLがインデックスを使用して検索を最適化しようとする試みを無効にします。このプロジェクトが大きくなる場合(つまり、テーブルに多数の行がある場合)、データをlatin1ではなくutf8形式で保存する必要があります。 (おそらく、LIKE '%whatever%' 検索用語もMySQLのインデックス作成を無効にします。)



    1. MySQLでインデックスを作成または削除するために存在する場合、どのように使用できますか?

    2. データベース内の文字列のすべてのインスタンスを検索して置き換える方法は?

    3. MySQL ONUPDATECURRENT_TIMESTAMPが更新されない

    4. SQLServerの計算列のリストを返す