Bạn sẽ phải thêm 'null Guard' của mình vào tìm kiếm toàn văn và sử dụng to_tsquery
thay vì plainto_tsquery
(để tìm kiếm tiền tố hoạt động).
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 ? ";
và thêm searchString
vào PreparedStatement
của bạn lần thứ hai
ps = conn.prepareStatement(sql);
ps.setString(1, searchString);
ps.setString(2, searchString);
ps.setInt(3, firstRow);
ps.setInt(4, rowCount);
Lưu ý bằng cách sử dụng tìm kiếm toàn văn, bạn sẽ không thể tìm kiếm các phần từ (như %user%
, %name
hoặc us%name
). Tuy nhiên, bạn có thể tìm kiếm các tiền tố, ví dụ:user:*