【问题标题】:MySQL Select with LIKE and WHEREMySQL 使用 LIKE 和 WHERE 选择
【发布时间】:2011-05-12 18:08:19
【问题描述】:

我有一个传记数据表,我需要执行一个查询来选择在他们的传记中包含“死亡”一词且死亡日期为 NULL 的人。这不起作用:

SELECT * FROM people
WHERE bio LIKE '%died%'
AND death_date IS NULL

这会选择死亡日期为空的每个人,但也会选择生物中没有“死亡”一词的人。我可以在一个查询中执行此操作吗?

【问题讨论】:

  • 你确定它会返回那些在他们的简历中没有“死”的人吗?请记住,它还将包括包含 dead 的单词,例如 study 和 imbodied。
  • 分享这样的示例数据。

标签: mysql select null where sql-like


【解决方案1】:

也许问题在于引号,使用 " 而不是 ' 来包装 LIKE 子句。

SELECT * FROM people
WHERE bio LIKE "%died%"
AND death_date IS NULL

【讨论】:

  • 像这样运行查询会返回相同的结果。
  • “bio”字段是什么数据类型?
【解决方案2】:

可能是“完全死亡”之类的词,但仍将被选中。仔细检查您选择的记录中是否不存在“死亡”短语作为某些单词的一部分。

【讨论】:

  • 不要忘记,如果单词在简历的开头,则在“死”前面添加空格将不起作用。
【解决方案3】:

我建议你将 bio 设为大写,并像 "%DIED%" 一样确保 death_date 真的为空,看看你是否从两个独立的案例中得到答案。你得到什么回应?

【讨论】:

  • 单独使用 WHERE death_date IS NULL 返回 death_date 为 NULL 的人。
  • 怎么样? WHERE UPPER(bio) LIKE '%DIED%'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2021-09-14
  • 2017-05-10
  • 2020-12-13
  • 2015-05-26
  • 1970-01-01
相关资源
最近更新 更多