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

MySQLはテキストコンテンツから完全一致の単語を返します

    正解はおそらく全文検索です。

    ただし、2つの注意点があります。製品の説明やユーザーのコメントなどの短い文字列があり、likeを使用したい場合 、次のようなことができます:

    where concat(' ', txt, ' ') like concat('% ', $word, ' %')
    

    ただし、これは区切り文字がスペースであることを前提としています。したがって、「こんにちは」は見つかりません。これを修正するには、次のようにします。

    where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')
    

    しかし、これは苦痛であることがすぐにわかります。したがって、全文検索。

    次に、キーワードを実際に保存している場合 列にある場合、解決策はより単純です。そうしないでください。元のテーブル行ごとに1行、キーワードごとに1行のジャンクションテーブルを作成します。リストを文字列に格納することは、SQLでは悪い考えです。




    1. DoctrineQueryBuilderの式mysqlNOW()

    2. AWSRDSでのMySQLデータベースおよびOracleデータベースでのJDeveloperの使用パート1

    3. 地理的に多様なユーザーがいるアプリのバックエンドデータベースのセットアップ

    4. Javaを使用してWE8ISO8859P1でエンコードされたOracleデータベースからアラビア語のテキストを読み取る