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

すべての列に検索フィルターを実装する

    全文検索に「nullガード」を追加し、to_tsqueryを使用する必要があります plainto_tsqueryの代わりに (プレフィックス検索を機能させるため)

    SqlStatement = "SELECT * FROM ACCOUNT "
        + " WHERE (trim(?) = '') IS NOT FALSE"
        + " OR to_tsvector('english', USER_NAME || ' ' || FIRST_NAME || ' ' || LAST_NAME ) @@  to_tsquery(?)"
        + " ORDER BY user_name ASC offset ? limit ? ";
    

    searchStringを追加します PreparedStatementに 2回目

     ps = conn.prepareStatement(sql);
    
     ps.setString(1, searchString);
     ps.setString(2, searchString);
     ps.setInt(3, firstRow);
     ps.setInt(4, rowCount);
    

    全文検索を使用すると、単語の一部(%user%など)を検索できなくなります。 、%name またはus%name )。ただし、プレフィックスを検索することはできます。 user:*




    1. ツリーのデータベース表現のクエリ(MySQL)

    2. SQL構文の問題

    3. SQL-プロシージャ列エラー

    4. EntityFramework 6 Alpha 2&MySQL Connector / NET 6.6.4