Cách chính xác để xử lý điều này trong SQL là thêm một bảng khác cho thuộc tính đa giá trị. Nó chống lại mô hình quan hệ để lưu trữ nhiều giá trị rời rạc trong một cột duy nhất. Vì nó được dự định là không nên có rất ít hỗ trợ cho nó bằng ngôn ngữ SQL.
Cách giải quyết duy nhất để tìm một giá trị nhất định trong danh sách được phân tách bằng dấu phẩy là sử dụng các biểu thức chính quy, nói chung là xấu và chậm. Bạn phải đối phó với các trường hợp cạnh như khi một giá trị có thể có hoặc không ở đầu hoặc cuối chuỗi, cũng như bên cạnh dấu phẩy.
SELECT * FROM properties WHERE bedrooms RLIKE '[[:<:]]2[[:>:]]';
Có những loại truy vấn khác dễ dàng khi bạn có một bảng chuẩn hóa, nhưng khó với danh sách được phân tách bằng dấu phẩy. Ví dụ bạn đưa ra, về việc tìm kiếm giá trị bằng hoặc lớn hơn tiêu chí tìm kiếm, là một trong những trường hợp như vậy. Cũng xem xét:
- Làm cách nào để xóa một phần tử khỏi danh sách được phân tách bằng dấu phẩy?
- Làm cách nào để đảm bảo danh sách được sắp xếp theo thứ tự?
- Số lượng phòng trung bình là bao nhiêu?
- Làm cách nào để đảm bảo các giá trị trong danh sách là các mục nhập hợp lệ? Ví dụ. Điều gì ngăn tôi nhập "1,2, banana"?
Nếu bạn không muốn tạo bảng thứ hai, hãy nghĩ ra cách để biểu diễn dữ liệu của bạn bằng một giá trị duy nhất.
Chính xác hơn, tôi nên nói rằng tôi khuyên bạn nên trình bày dữ liệu của mình bằng một giá trị duy nhất mỗi cột và giải pháp của Mike Atlas thực hiện được điều đó.