我知道NULL值和空字符串("")值之间的区别是什么,但如果我想通过使用OR关键字得到一个值,我得不到NULL值的结果
我想查询的表看起来像这样:
titles_and_tags
+----+----------+------+
| id | title | tag |
+----+----------+------+
| 1 | title1 | NULL |
| 2 | title2 | tag1 |
| 3 | title3 | tag2 |
| 4 | edit | NULL |
| 5 | rowdata | div |
+----+----------+------+
Run Code Online (Sandbox Code Playgroud)
我使用的查询如下所示:
select *
from `titles_and_tags`
WHERE `title` LIKE "title%"
AND `tag` = "tag1" OR `tag` IS NULL
Run Code Online (Sandbox Code Playgroud)
所以我想在这里得到一行(id:1,2),但这会产生0行.我做错了什么?
编辑
对不起,我忘记了我的主要问题是:
select *
from `titles_and_tags`
WHERE `title` LIKE "title%"
AND `tag` = "tag1" OR `tag` LIKE '%'
Run Code Online (Sandbox Code Playgroud)
所以这更像是一个偏离主题,抱歉
尝试
select
*
from
`titles_and_tags`
WHERE
`title` LIKE "title%" AND
(`tag` = "tag1" OR `tag` IS NULL)
Run Code Online (Sandbox Code Playgroud)
你离开了通配符%了你like,再加上你应该在括号括起来的or清楚和明确组逻辑在一起,以确保它在你希望的方式执行的条款.
编辑:
在您的编辑tag like '%'中将匹配标签不是的所有行null. 除值或与值之外的任何比较都是错误的.我不确定你要对最后一个查询做什么,但我怀疑你原来提问的那个更像你真正想要的那个.isnot isnull
| 归档时间: |
|
| 查看次数: |
3159 次 |
| 最近记录: |