2011-03-18 73 views
38

我在我的分貝這些文字,MySQL的:NOT LIKE

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 

如何在我的查詢中忽略它們?

謝謝。

+0

我明白你的意思嗎? 「categories_posts」和「categories_news」是「developer_configurations_cms.cfg_name_unique」列的值嗎? – 2011-03-18 00:45:03

+0

就足以說「不像」類別%'「,並具有該值。但是這不會解決你的問題 – Dalen 2011-03-18 00:46:57

+0

AND developer_configurations_cms.cfg_name_unique LIKE'%add' – 2011-03-18 00:48:39

回答

57

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%' 
+0

但是它爲什麼會起作用? – 2015-10-07 08:48:26

3

我不知道爲什麼

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') 
+0

謝謝。 cfg_name_unique不喜歡'categories%' - 將會正常工作!大聲笑 – laukok 2011-03-19 04:15:37

+1

2線是多餘的!只需要一個。 – JDuarteDJ 2014-02-27 11:51:52

+0

什麼是需要被忽略的另一個名字,比如'categories_articles'你必須返回並將其添加到查詢中。接受的答案對未來的打樣更好 – locrizak 2016-11-17 15:32:42