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

MySQLのアクセントに依存しない検索クエリ

    実行時にSQLクエリで照合を変更できます

    ...where title like '%torun%' collate utf8_general_ci
    

    ただし、実行時に照合をオンザフライで変更すると、mysqlがインデックスを使用する可能性がなくなるため、大きなテーブルでのパフォーマンスが低下する可能性があることに注意してください。

    または、列をsearchable_titleなどの別の列にコピーすることもできます 、ただし、照合を変更します。実際には、この種の作業を行うのが一般的です。データをコピーしますが、特定のワークロード/目的に合わせて最適化されたわずかに異なる形式でデータを取得します。複製された列の同期を維持するための優れた方法として、トリガーを使用できます。この方法は、インデックスを作成すると、うまく機能する可能性があります。

    注-データベースにhtmlエンティティではなく、実際にこれらの文字が含まれていることを確認してください。また、接続の文字セットも重要です。上記は、たとえばsetを介してutf8に設定されていることを前提としています。名前 set names utf8のように

    そうでない場合は、紹介者 が必要です。 リテラル値の場合

    ...where title like _utf8'%torun%' collate utf8_general_ci
    

    もちろん、SQLクエリの残りの部分がエンコードされていない場合でも、一重引用符の値は実際にはutf8でエンコードされている必要があります。



    1. 日付を文字列としてmysqlに保存しても安全ですか?

    2. Apache-MySQLサービスが間違ったパスで検出されました。 /すでに使用されているポート

    3. 同じSQLのMySQLSELECTWHEREINLISTとNOTINLIST

    4. sqlgroupbyとdistinct