PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Implementar filtro de pesquisa para todas as colunas


Você terá que adicionar seu 'null guard' à pesquisa de texto completo e usar to_tsquery em vez de plainto_tsquery (para que a pesquisa de prefixo funcione).
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 adicione o searchString ao seu PreparedStatement uma segunda vez
 ps = conn.prepareStatement(sql);

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

Observação usando uma pesquisa de texto completo você não poderá pesquisar por partes de palavras (como %user% , %name ou us%name ). Você pode procurar por prefixos, por exemplo, user:*