我的db表就像:
[id] [city] [temp] [cssstyle]
[1] [London] [10] [top:15px;left:5px]
[2] [Berlin] [10] []
[3] [Paris] [10] [top:15px;left:5px]
[4] [New York] [10] []
cssstyle是varchar(128)
我尝试使用以下命令仅显示具有cssstyle的行:
mysql_query("SELECT * FROM cities WHERE cssstyle is not null")
但这显示所有行,我只想显示伦敦和巴黎行。
由于
答案 0 :(得分:3)
您似乎在空字段中存储空字符串(''
)而不是NULL
。这些是MySQL
中的不同内容。
使用此:
SELECT *
FROM cities
WHERE cssstyle > ''
使用"大于"您在MySQL
cssstyle
可能性来使用索引范围扫描
答案 1 :(得分:3)
SELECT * FROM cities WHERE cssstyle IS NOT NULL OR cssstyle <> ''
答案 2 :(得分:2)
您还可以使用AND
检查导致null的条件
SELECT * FROM cities where cssstyle IS NOT NULL AND cssstyle <> ''
如果您在表格中插入NULL
而不是''
,也会更好
然后你的查询必须足够
SELECT * FROM cities where cssstyle IS NOT NULL
答案 3 :(得分:1)
您还可以在MySQL中尝试LENGTH
函数:
SELECT *
FROM cities
WHERE LENGTH(cssstyle) > 0
答案 4 :(得分:1)
我不确定您的cssstyle
列是否将默认值存储为null
。更好地检查是否为空或为空。
SELECT * FROM cities WHERE cssstyle != '' OR cssstyle IS NOT NULL