php mysql,如果varchar不为null

php mysql,如果varchar不为null,php,mysql,Php,Mysql,我的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 c

我的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")
但这是显示所有行,我喜欢只显示伦敦和巴黎行


谢谢

您似乎在空字段中存储空字符串(
'
),而不是
NULL
。这些在MySQL中是不同的

使用以下命令:

SELECT  *
FROM    cities
WHERE   cssstyle > ''
通过使用“大于”,您可以在
cssstyle

上使用索引范围扫描,从cssstyle不为NULL或cssstyle的城市中选择*
SELECT * FROM cities WHERE cssstyle IS NOT NULL OR cssstyle <> ''

您也可以尝试MySQL中的
LENGTH
函数:

SELECT * 
FROM cities 
WHERE LENGTH(cssstyle) > 0

我不确定您的
csssstyle
列是否将默认值存储为
null
。最好检查是否不为空或为空

SELECT * FROM cities WHERE cssstyle != '' OR cssstyle IS NOT NULL

您还可以使用
检查导致null的两个条件

SELECT * FROM cities where cssstyle IS NOT NULL AND cssstyle <> ''

您确定该行设置为
NULL
?谢谢,这就是我想要的。@feeela:要过滤掉NULL和空值,请尽可能使用索引。
SELECT * FROM cities where cssstyle IS NOT NULL