Câu trả lời:
Đây là loại lĩnh vực gì? Toán tử IN không thể được sử dụng với một trường duy nhất, nhưng có nghĩa là được sử dụng trong các truy vấn con hoặc với các danh sách được xác định trước:
-- subquery
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- predefined list
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);
Nếu bạn đang tìm kiếm một chuỗi, hãy tìm toán tử THÍCH (nhưng điều này sẽ chậm):
-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';
Nếu bạn hạn chế nó để chuỗi bạn đang tìm kiếm phải bắt đầu bằng chuỗi đã cho, nó có thể sử dụng các chỉ mục (nếu có một chỉ mục trên trường đó) và nhanh chóng hợp lý:
-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';
NOT IN
rằng không có giá trị nào sẽ là NULL, vì KHÔNG IN và NULL không kết hợp theo cách rõ ràng nếu bạn không quen với logic ba giá trị. Ở đây bạn sẽ sử dụng SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL);
Nếu bạn cũng cần loại trừ các giá trị NULL, bạn cần thực hiện việc này:SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL) AND x.b IS NOT NULL;
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';
(Hãy chắc chắn rằng bạn thoát $ x đúng cách trước để tránh SQL tiêm)
Chỉnh sửa: NOT IN
thực hiện một cái gì đó hơi khác một chút - câu hỏi của bạn không hoàn toàn rõ ràng vì vậy hãy chọn câu hỏi nào để sử dụng. LIKE 'xxx%'
có thể sử dụng một chỉ mục. LIKE '%xxx'
hoặc LIKE '%xxx%'
không thể.