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

SQLでハイフンとスペースを同じように扱うことは可能ですか?

    誰かが提案したように、フルテキスト検索を適応させて使用することができます。

    このルートを選択する場合は、必要なフィールドで全文検索を有効にする必要があります。

    post_titleとpost_body(?)をチェックすると仮定します。これを実行する必要があります;

    ALTER TABLE `posts` ADD FULLTEXT KEY `post_search` (`post_title`,`post_body`);
    

    これが完了すると、検索クエリを簡単に編集して次のようになります。

    $sql = "SELECT * FROM `posts` WHERE MATCH(post_title,post_body) AGAINST '$search'";
    

    より適切なマッチングが必要な場合は、スコアと順序を指定することもできます。これには、次のようなコードが必要になります。

    $sql = "SELECT *, MATCH(post_title, post_body) AGAINST ('{$search}') AS score ".
           "FROM `posts` WHERE MATCH(post_title, post_body) AGAINST ('{$search}') ORDER BY `score` DESC";
    

    ---メモ

    検索するには、どのように検索するかを決める必要があります。

    私が同様に使用した最後の例では、検索語のフォーム( "Search"という名前)があり、$ _POST['search']がサーバーに送信されました。

    次に使用しました;

    $search = (array_key_exists('search', $_POST) && is_string($_POST['search'])) ? mysql_real_escape_string($_POST['search'], $c) : FALSE ;
    if ($search) {
        // Do the fulltext query requires (See above)
    }
    

    全文検索ではハイフンが無視されるため、スペースだけが残ります。これは、スコアリングされた結果を使用することを選択した場合に、全文検索に最適です。




    1. OracleWHILELOOPの例

    2. プリティリンクのアポストロフィとコロン

    3. mysqlでギャップのないシリアル番号を見つける方法は?

    4. Entity Frameworkコアエラー:サーバー'localhost'上のデータベース''への接続を使用してエラーが発生しました