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

Có thể truy vấn cột được phân tách bằng dấu phẩy cho một giá trị cụ thể không?

Bạn có thể, bằng cách sử dụng LIKE. Bạn không muốn đối sánh các giá trị từng phần, vì vậy bạn sẽ phải bao gồm dấu phẩy trong tìm kiếm của mình. Điều đó cũng có nghĩa là bạn sẽ phải cung cấp thêm một dấu phẩy để tìm kiếm các giá trị ở đầu hoặc cuối văn bản của mình:

select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'

Nhưng truy vấn này sẽ chậm, cũng như tất cả các truy vấn sử dụng LIKE, đặc biệt là với ký tự đại diện đứng đầu.

Và luôn có rủi ro. Nếu có khoảng trắng xung quanh giá trị hoặc giá trị có thể chứa dấu phẩy trong trường hợp chúng được bao quanh bởi dấu ngoặc kép (như trong tệp csv), truy vấn này sẽ không hoạt động và bạn sẽ phải thêm nhiều logic hơn, làm chậm truy vấn của bạn thậm chí nhiều hơn nữa.

Một giải pháp tốt hơn sẽ là thêm một bảng con cho các danh mục này. Hay thậm chí là một bảng riêng biệt cho các thư mục và một bảng liên kết chéo chúng với YourTable.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thu thập hàng loạt PL / SQL với mệnh đề LIMIT trong Cơ sở dữ liệu Oracle

  2. Chọn giá trị phần tử xml trong Oracle

  3. Tính toán chênh lệch giữa hai dấu thời gian trong Oracle bằng mili giây

  4. SEC_CASE_SENSTIVE_LOGON trong 12c

  5. Làm cách nào để xóa các bản sao khỏi danh sách được phân tách bằng dấu phẩy bằng regexp_replace trong Oracle?