PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Suchfilter für alle Spalten implementieren

Sie müssen Ihren 'Null Guard' zur Volltextsuche hinzufügen und to_tsquery verwenden statt plainto_tsquery (damit die Präfixsuche funktioniert).

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

und fügen Sie den searchString hinzu zu Ihrem PreparedStatement ein zweites Mal

 ps = conn.prepareStatement(sql);

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

Hinweis Mit einer Volltextsuche können Sie nicht nach Wortteilen (wie %user%) suchen , %name oder us%name ). Sie können jedoch nach Präfixen suchen, z. user:*