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:*