sql >> Database >  >> RDS >> PostgreSQL

Zoekfilter implementeren voor alle kolommen

U moet uw 'null guard' toevoegen aan de fulltext-zoekopdracht en to_tsquery gebruiken in plaats van plainto_tsquery (zodat het zoeken naar voorvoegsels werkt).

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 ? ";

en voeg de searchString . toe naar uw PreparedStatement een tweede keer

 ps = conn.prepareStatement(sql);

 ps.setString(1, searchString);
 ps.setString(2, searchString);
 ps.setInt(3, firstRow);
 ps.setInt(4, rowCount);

Opmerking met een fulltext-zoekopdracht kunt u niet zoeken naar woorddelen (zoals %user% , %name of us%name ). U kunt wel zoeken naar voorvoegsels, b.v. user:*




  1. Maak een join-query in loopback.io

  2. Inleiding tot PL/SQL-verzamelmethoden in Oracle Database

  3. Hoe kan ik dezelfde tabel bijwerken bij verwijdering in MYSQL?

  4. T-SQL Verwijdert alle rijen uit een tabel wanneer de subquery onjuist is opgemaakt