Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL LIKE query with underscore

Tags:

sql

mysql

I have the following table images:

+----+--------------+ | id |   img_path   | +----+--------------+ | 1  | abc_1.jpg    | | 2  | abc_2.jpg    | | 3  | abcde_1.jpg  | | 4  | abcde_2.jpg  | | 5  | abcdef_1.jpg | +----+--------------+ 

I would like to select the entries that img_path starts with abc_, so I use the following query:

SELECT id FROM images WHERE img_path LIKE 'abc_%' 

But it returns all 5 rows. How do I only returns id = 1 & 2 ( which img_path starts with abc_) ?

like image 360
Raptor Avatar asked Mar 04 '14 08:03

Raptor


People also ask

How do you underscore in like Operator?

The SQL LIKE Operator The LIKE operator is used in a WHERE clause to search for a specified pattern in a column. There are two wildcards often used in conjunction with the LIKE operator: The percent sign (%) represents zero, one, or multiple characters. The underscore sign (_) represents one, single character.

How do I match an underscore in SQL?

If you are searching for an underscore then escape it with a '\' so you would search for' \_'. When matching SQL patterns, you can use these symbols as placeholders: % (percent) to substitute for zero or more characters, or _ (underscore) to substitute for one single character.

Can we use underscore in MySQL?

You cannot give underscore in table name. If you still want to create a new table with underscore, surround it using backticks, not single quotes.


1 Answers

Found out that _ is a special character. Have to escape with backslashes.

SELECT id FROM images WHERE img_path LIKE 'abc\_%' 

which returns 2 rows as expected

like image 62
Raptor Avatar answered Sep 24 '22 00:09

Raptor