sql >> Databasteknik >  >> RDS >> PostgreSQL

Implementera sökfilter för alla kolumner

Du måste lägga till din "null guard" i fulltextsökningen och använda to_tsquery istället för plainto_tsquery (för att prefixsökning ska fungera).

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

och lägg till searchString till ditt PreparedStatement en andra gång

 ps = conn.prepareStatement(sql);

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

Obs med en fulltextsökning kommer du inte att kunna söka efter orddelar (som %user% , %name eller us%name ). Du kan dock söka efter prefix, t.ex. user:*




  1. MYSQL-fråga för att få datumskillnad

  2. infoga array av värden i en databas med hjälp av SQL-fråga?

  3. Problem med att använda pg_search med en polymorf association

  4. Wildfly 8.0.0 mysql problem med datakälla