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

Implementa il filtro di ricerca per tutte le colonne

Dovrai aggiungere la tua "protezione nulla" alla ricerca fulltext e utilizzare to_tsquery invece di plainto_tsquery (affinché la ricerca del prefisso funzioni).

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

e aggiungi la searchString al tuo PreparedStatement una seconda volta

 ps = conn.prepareStatement(sql);

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

Nota utilizzando una ricerca fulltext non sarai in grado di cercare parti di parole (come %user% , %name o us%name ). Tuttavia, puoi cercare i prefissi, ad es. user:*