2012-12-30 124 views
1

我正在使用此代碼從我創建的表中檢索數據。SELECT語句不能正常工作

SELECT id,shirt_name,boys FROM shirts WHERE boys IS NOT NULL 

而不是隻選擇boys列中輸入的行,它會選擇所有行。這是我創建表格的方式

CREATE TABLE shirts (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, 
    shirt_name VARCHAR(20) NOT NULL, 
    men VARCHAR(10) NULL, 
    women VARCHAR(10) NULL, 
    boys VARCHAR(10) NULL, 
    girls VARCHAR(10) NULL, 
    babies VARCHAR(10) NULL, 
)ENGINE=INNODB; 

INSERT INTO shirts(shirt_name,men,women,boys,girls,babies) VALUES 
    ('Crewneck Tee','me_crn','wo_crn','bo_crn','gi_crn','ba_crn'), 
    ('V-Neck Tee','me_vnc','wo_vnc','','',''), 
    ('Scoop Neck Tee','','wo_sco','','',''), 
    ('Raglan Tee','me_rag','wo_rag','bo_rag','gi_rag',''), 
    ('Ringer Tee','me_rin','wo_rin','bo_rin','gi_rin',''), 
    ('Cap Sleeve Tee','','wo_cap','','gi_cap',''), 
    ('Tank Top','me_tan','wo_tan','bo_tan','gi_tan',''), 
    ('Spaghetti Strap','','wo_spa','','',''), 
    ('Hoodie','me_hod','wo_hod','bo_hod','gi_hod','ba_hod'); 

我做錯了什麼?

+0

非空字符串(即空格)列使用什麼? –

回答

1
SELECT id,shirt_name,boys FROM shirts WHERE boys != '' 

是你需要與此數據

+0

謝謝!這工作! – Optiq

+0

在這種情況下,特別是在給定數據模型的情況下,我會說他們應該修正他們的數據,而不是聲明。 – Joey

4

你沒有插入與NULL任何記錄在boys列。只記錄它是一個空字符串。而一個空字符串('')與NULL不同,所以它匹配IS NOT NULL

+0

謝謝!!!這解釋了它。 – Optiq