PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Triển khai bộ lọc tìm kiếm cho tất cả các cột

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thiết lập tiện ích mở rộng Postgres?

  2. Heroku - làm thế nào để kéo dữ liệu từ cơ sở dữ liệu vào cơ sở dữ liệu cục bộ?

  3. setParameter () không đặt dấu ngoặc kép thích hợp

  4. lệnh không hợp lệ psql \ N trong khi khôi phục sql

  5. Tại sao Postgres không sử dụng chỉ mục?