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

ベストマッチによるMySQLの順序

    最初の方法(単語の開始、単語の途中、単語の終了)を行うには、次のようにします。

    SELECT word
    FROM words
    WHERE word LIKE '%searchstring%'
    ORDER BY
      CASE
        WHEN word LIKE 'searchstring%' THEN 1
        WHEN word LIKE '%searchstring' THEN 3
        ELSE 2
      END
    

    2番目の方法(一致した文字列の位置)を行うには、 LOCATE 機能

    SELECT word
    FROM words
    WHERE word LIKE '%searchstring%'
    ORDER BY LOCATE('searchstring', word)
    

    たとえば、複数の単語がhabで始まる場合に備えて、タイブレーカーが必要になる場合もあります。 。そのためには、次のことをお勧めします:

    SELECT word
    FROM words
    WHERE word LIKE '%searchstring%'
    ORDER BY <whatever>, word
    

    habで始まる複数の単語の場合 、habで始まる単語 グループ化され、アルファベット順に並べ替えられます。



    1. MariaDBでのCOT()のしくみ

    2. Access2016で排他モードでデータベースを開く方法

    3. 列内の重複するエントリを検索する

    4. PDOとpg_*関数