2

我的数据库表是这样的:

[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")

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

谢谢

4

5 回答 5

3

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

用这个:

SELECT  *
FROM    cities
WHERE   cssstyle > ''

通过使用“大于”,您MySQL可以使用索引范围扫描cssstyle

于 2013-05-08T11:01:14.080 回答
3
SELECT * FROM cities WHERE cssstyle IS NOT NULL OR cssstyle <> ''
于 2013-05-08T11:02:19.193 回答
2

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

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

NULL如果你插入而不是''在你的表中也会更好

那么您的查询必须足够

SELECT * FROM cities where cssstyle IS NOT NULL
于 2013-05-08T11:04:56.620 回答
1

你也可以试试LENGTHMySQL 中的函数:

SELECT * 
FROM cities 
WHERE LENGTH(cssstyle) > 0
于 2013-05-08T11:02:58.463 回答
1

我不确定您的cssstyle列将默认值存储为null. 更好地检查是否不为空或为空。

SELECT * FROM cities WHERE cssstyle != '' OR cssstyle IS NOT NULL
于 2013-05-08T11:03:35.810 回答