I was solving a problem on SQL from Hackerrank. I have to make a query such that it gives me all city names starting with a, e, i, o or u. I’m using Like operator but still wrong answer.
Here’s the problem Link
Here’s my solution-
SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE '[AEIOU]%'
Can anybody explain?
Advertisement
Answer
LIKE does not support that parttern. You need a regular expression match for this:
SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[AEIOU]'
In the regex, ^ represents the beginning of the string, and the square brackets define a custom character class (meaning that the first character must belong to that list).
On the other hand, if you were to use LIKE, you would need multiple conditions, which would make the code lengthier (and probably less efficient):
WHERE
CITY LIKE 'A%'
OR CITY LIKE 'E%'
OR CITY LIKE 'I%'
OR CITY LIKE 'O%'
OR CITY LIKE 'U%'