2010-11-19 14 views
6

Tôi có bảng dữ liệu tiểu sử và tôi cần thực hiện truy vấn chọn những người có từ "đã chết" trong tiểu sử của họ và ngày sinh của người đó là NULL. Điều này không hoạt động:MySQL Chọn với LIKE và WHERE

SELECT * FROM people 
WHERE bio LIKE '%died%' 
AND death_date IS NULL 

Điều đó sẽ chọn những người không có từ "chết" trong tiểu sử của họ. Tôi có thể làm điều này trong một truy vấn không?

+2

Bạn có chắc chắn rằng nó trả về những người không 'chết' trong tiểu sử của họ? Hãy nhớ rằng nó cũng sẽ bao gồm các từ có chứa chết như nghiên cứu, và imbodied. – Kibbee

Trả lời

5

Nó có thể là một từ như 'completelydied' và họ vẫn sẽ được lựa chọn. Kiểm tra cẩn thận nếu cụm từ 'đã chết' không tồn tại như một phần của một số từ trong hồ sơ mà bạn đã chọn.

+0

Thêm dấu cách trước khi "chết" có vẻ hoạt động, cảm ơn. – kirkaracha

+1

Đừng quên rằng thêm không gian trước 'chết' sẽ không hoạt động nếu từ đó ở đầu tiểu sử. –

3

Có lẽ vấn đề là có dấu ngoặc kép, sử dụng "thay vì 'quấn mệnh đề LIKE.

SELECT * FROM people 
WHERE bio LIKE "%died%" 
AND death_date IS NULL 
+0

Chạy truy vấn như thế này trả về kết quả tương tự. – kirkaracha

+0

Loại dữ liệu nào là trường "sinh học"? – Webnet

0

tôi khuyên bạn nên tạo trường hợp sinh học và có "% DIED%" cũng đảm bảo rằng dead_date thực sự là rỗng, xem nếu bạn nhận được câu trả lời từ cả hai trường hợp một cách độc lập. Bạn đang nhận được phản hồi gì?

+0

Sử dụng WHERE death_date IS NULL tự trả về những người có death_date là NULL. – kirkaracha

+0

thì sao? WHERE UPPER (sinh học) GIỐNG '% DIED%' –