Problem solve Get help with specific problems with your technologies, process and projects.

Eliminate rows with a certain string value in MySQL

I'm new to database management systems and SQL. I'm currently working with MySQL and interfacing with it via driver MySQL ODBC 3.51. This is a straightforward desktop project using the database as flat files, no relational database, just a small number of tables.

If I issue SELECT * FROM table_name WHERE field_name1 !=0 ORDER BY field_name2, everything performs as expected when field_name1 is an integer. That is, rows that have a zero value in field_name1 are not returned from the table. This SQL statement functions as expected as long as field_name1 is an integer.

When field_name1 is VARCHAR (XX) then all of the table is returned and is properly sorted by the integer values in field_name2. I expected no row returned where field_name1 is a match for the string. Tried <> for not equal. I'm putting single quotes around the string. Tried using NOT LIKE instead of WHERE. Tried other syntax with no sucess.

I want to order data return by one field and eliminate all rows that have a certain string value in another field. This works OK for integers but not for string values. Can you help?

It sounds like you are trying to eliminate rows that contain a certain string value. In this case the NOT LIKE syntax will probably serve you best:

mysql> USE test;
Database changed
mysql> CREATE TABLE unlikeTest(
     -> myval VARCHAR(15)
     -> );
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO unlikeTest VALUES('This and that'),('Like That'),('Watch This');
Query OK, 3 rows affected, 1 warning (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 1

mysql> SELECT * FROM unlikeTest WHERE myval NOT LIKE ('%this%');
| myval           |
| Like That       |
1 row in set (0.00 sec)

mysql> SELECT * FROM unlikeTest WHERE myval NOT LIKE ('%that%');
| myval      |
| Watch This |
1 row in set (0.00 sec)
See the String Comparison Functions section of the MySQL Reference Manual for more information.

Dig Deeper on Linux servers

Have a question for an expert?

Please add a title for your question

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.