sql >> Database teknologi >  >> RDS >> PostgreSQL

Implementer søgefilter for alle kolonner

Du bliver nødt til at tilføje din 'null guard' til fuldtekstsøgningen og bruge to_tsquery i stedet for plainto_tsquery (for at præfikssøgning skal fungere).

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

og tilføj searchString til din PreparedStatement anden gang

 ps = conn.prepareStatement(sql);

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

Bemærk ved at bruge en fuldtekstsøgning vil du ikke være i stand til at søge efter orddele (som %user% , %name eller us%name ). Du kan dog søge efter præfikser, f.eks. user:*




  1. Den mest effektive måde at klone en AWS RDS-database på?

  2. Hvordan kan jeg tælle det samlede antal brugte MySQL-forespørgsler pr. side?

  3. ved at bruge mysql regex_replace med et regulært udtryk

  4. Hvordan skriver jeg en funktion i plpgsql, der sammenligner en dato med et tidsstempel uden tidszone?