MySQL: NOT LIKE

MysqlSql Like

Mysql Problem Overview


I have these text in my db,

categories_posts
categories_news
posts_add
news_add

And I don't want to select the rows with categories, I use a query something like this,

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

but it returns these two in the output as well...

categories_posts
categories_news

How can I ignore them in my query?

Thanks.

Mysql Solutions


Solution 1 - Mysql

categories_posts and categories_news start with substring 'categories_' then it is enough to check that developer_configurations_cms.cfg_name_unique starts with 'categories' instead of check if it contains the given substring. Translating all that into a query:

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

Solution 2 - Mysql

I don't know why

cfg_name_unique NOT LIKE '%categories%' 

still returns those two values, but maybe exclude them explicit:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRunView Question on Stackoverflow
Solution 1 - MysqlDalenView Answer on Stackoverflow
Solution 2 - MysqlPiotr SalaciakView Answer on Stackoverflow