php mysql如果不是varchar的null

时间:2013-05-08 11:00:03

标签: 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 cssstyle is not null")

但这显示所有行,我只想显示伦敦和巴黎行。

由于

5 个答案:

答案 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