【问题标题】:MySQL: NOT LIKEMySQL:不喜欢
【发布时间】:2011-07-17 20:09:49
【问题描述】:

我的数据库中有这些文本,

categories_posts
categories_news
posts_add
news_add

我不想选择带有categories 的行,我使用类似这样的查询,

SELECT *
    FROM developer_configurations_cms

    WHERE developer_configurations_cms.cat_id = '1'
    AND developer_configurations_cms.cfg_variables LIKE '%parent_id=2%'
    AND developer_configurations_cms.cfg_name_unique NOT LIKE '%categories%'

但它也会在输出中返回这两个...

categories_posts
categories_news

如何在我的查询中忽略它们?

谢谢。

【问题讨论】:

  • 我理解你的意思吗? “categories_posts”和“categories_news”是“developer_configurations_cms.cfg_name_unique”列的值?
  • in 足以说“不喜欢'categories%'”,具有该值。但这并不能解决您的问题
  • AND developer_configurations_cms.cfg_name_unique LIKE '%add'
  • @Dalen: "NOT LIKE 'categories%'" - 对我来说很好用。但为什么它不能解决我的问题?
  • 我猜这个值 %categories% 和 categories% 做同样的事情。您现在查询是否返回了正确的结果集?

标签: mysql sql-like


【解决方案1】:

categories_postscategories_news 以子字符串 'categories_' 开头,然后检查 developer_configurations_cms.cfg_name_unique 是否以 'categories' 开头就足够了,而不是检查它是否包含给定的子字符串。将所有这些转换为查询:

SELECT *
    FROM developer_configurations_cms

    WHERE developer_configurations_cms.cat_id = '1'
    AND developer_configurations_cms.cfg_variables LIKE '%parent_id=2%'
    AND developer_configurations_cms.cfg_name_unique NOT LIKE 'categories%'

【讨论】:

  • % 不是零个或多个字符吗?至少在 Oracle 中是这样的。 OP 的原始查询应该根据预期工作。
【解决方案2】:

不知道为什么

cfg_name_unique NOT LIKE '%categories%' 

仍然返回这两个值,但可能会明确排除它们:

SELECT *
    FROM developer_configurations_cms

    WHERE developer_configurations_cms.cat_id = '1'
    AND developer_configurations_cms.cfg_variables LIKE '%parent_id=2%'
    AND developer_configurations_cms.cfg_name_unique NOT LIKE '%categories%'
    AND developer_configurations_cms.cfg_name_unique NOT IN ('categories_posts', 'categories_news')

【讨论】:

  • 谢谢。 cfg_name_unique NOT LIKE 'categories%' - 可以正常工作!大声笑
  • 这两行是多余的!只需要一个。
  • 还有什么需要忽略的名称,例如categories_articles,您必须返回并将其添加到查询中。接受的答案对于将来的校对要好得多
猜你喜欢
  • 1970-01-01
  • 2012-03-17
  • 2019-07-03
  • 2014-03-30
  • 2013-05-26
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多