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

フィールド内のキーワードに対して文を照合するためのmysqlクエリ

    これを行う1つの方法は、apple, oranges, pearsを変換することです。 apple|oranges|pears RLIKEを使用します (つまり、正規表現)それに一致します。

    たとえば、「ジョンはリンゴを食べるのが好き」は正規表現「リンゴ|オレンジ|梨」と一致します。

    まず、「リンゴ、オレンジ、梨」を正規表現形式に変換するには、すべての「、」を「|」に置き換えます。 REPLACEを使用する 。次に、RLIKEを使用します 一致するキーワードエントリを選択するには:

    SELECT * 
    FROM keywords_table
    WHERE 'John liked to eat apples' RLIKE REPLACE(keywords,', ','|');
    

    ただし、これはコンマ区切りが一貫しているかどうかに依存します(つまり、apples,orangesのような行が1つある場合 これはREPLACEとしては機能しません カンマの後にスペースを置き換えます(行の例のように)。

    また、スケールアップもうまくいかないと思います。

    また、「ジョンはパイナップルを食べるのが好き」のような文がある場合、上記の両方の行に一致します(「リンゴ」が含まれているため)。次に、正規表現に単語の境界を追加してみます(つまり、WHERE $sentence RLIKE '[[:<:]](apple|oranges|pears)[[:>:]]' )、ただし、複数形がある場合、これは一致を台無しにします('apples'は'[wordboundary] apple [wordboundary]'と一致しません)。



    1. XAMPPでMariaDBをMySQLに変更するにはどうすればよいですか?

    2. 異なるスキーマから2つのテーブルをクエリする

    3. TableGatewayを使用したZF2のLEFTJOIN

    4. oracle systimestamp(sysdate)からミリ秒