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_
) ?
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.
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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With