SQL | LIKE

Sometimes we may require tuples from the database which match certain patterns. For example, we may wish to retrieve all columns where the tuples start with the letter ‘y’, or start with ‘b’ and end with ‘l’, or even more complicated and restrictive string patterns. This is where the LIKE Clause comes to rescue, often coupled with the WHERE Clause in SQL.

There are two kinds of wildcards used to filter out the results:

  • % : Used to match zero or more characters. (Variable Length)
  • _ : Used to match exactly one character. (Fixed Length)

The following are the rules for pattern matching with the LIKE Clause:

Pattern Meaning
‘a%’ Match strings which start with ‘a’
‘%a’ Match strings with end with ‘a’
‘a%t’ Match strings which contain the start with ‘a’ and end with ‘t’.
‘%wow%’ Match strings which contain the substring ‘wow’ in them at any position.
‘_wow%’ Match strings which contain the substring ‘wow’ in them at the second position.
‘_a%’ Match strings which contain ‘a’ at the second position.
‘a_%_%’ Match strings which start with ‘a’ and contain at least 2 more characters.

Example:

Say we have a relation, Supplier. We want to test various patterns using the LIKE clause:

Supplier Table:

SupplierID Name Address
S1 Paragon Suppliers 21-3, Okhla, Delhi
S2 Mango Nation 21, Faridabad, Haryana
S3 Canadian Biz 6/7, Okhla Phase II, Delhi
S4 Caravan Traders 2-A, Pitampura, Delhi
S5 Harish and Sons Gurgaon, NCR
S6 Om Suppliers 2/1, Faridabad, Haryana

Sample Queries and Outputs:

SELECT SupplierID, Name, Address
FROM Suppliers
WHERE Name LIKE 'Ca%';

Output:

S3 Canadian Biz 6/7, Okhla Phase II, Delhi
S4 Caravan Traders 2-A, Pitampura, Delhi
SELECT *
FROM Suppliers
WHERE Address LIKE '%Okhla%';

Output:

S1 Paragon Suppliers 21-3, Okhla, Delhi
S3 Canadian Biz 6/7, Okhla Phase II, Delhi
SELECT SupplierID, Name, Address
FROM Suppliers
WHERE Name LIKE '_ango%';

Output:

S2 Mango Nation 21, Faridabad, Haryana

Application: The LIKE operator is extremely resourceful in situations such as address filtering wherein we know only a segment or a portion of the entire address (such as locality or city) and would like to retrieve results based on that. The wildcards can be resourcefully exploited to yield even better and more filtered tuples based on the requirement.

This article is contributed by Anannya Uberoi. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : aditimantri2196



Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.