SQL LIKE
Sometimes we may require tuples from the database which match certain patterns. For example, we want 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 SQL LIKE Clause comes to the rescue, often coupled with the WHERE Clause in SQL.
In SQL, the LIKE operator is mainly used in the WHERE clause to search for a enumerate pattern in a column.
Two barriers are often used in conjunction with the LIKE :
- %: Used to match zero or more characters. (Variable Length)
- _: Used to match exactly one character. (Fixed Length)
SQL Like Syntax:
SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern;
The following are the rules for pattern matching with the LIKE Clause :
Pattern | Meaning |
---|---|
‘a%’ | Match strings that start with ‘a’ |
‘%a’ | Match strings with end with ‘a’ |
‘a%t’ | Match strings that contain the start with ‘a’ and end with ‘t’. |
‘%wow%’ | Match strings that contain the substring ‘wow’ in them at any position. |
‘_wow%’ | Match strings that contain the substring ‘wow’ in them at the second position. |
‘_a%’ | Match strings that contain ‘a’ at the second position. |
‘a_ _%’ | Match strings that 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 |
SQL LIKE – Sample Queries and Outputs
Query 1:
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 |
Query 2:
SELECT * FROM Suppliers WHERE Address LIKE '%Okhla%';
Output:
S1 | Paragon Suppliers | 21-3, Okhla, Delhi |
S3 | Canadian Biz | 6/7, Okhla Phase II, Delhi |
Query 3:
SELECT SupplierID, Name, Address FROM Suppliers WHERE Name LIKE '_ango%';
Output:
S2 | Mango Nation | 21, Faridabad, Haryana |
SQL LIKE 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.
Important to know about SQL LIKE
One important thing to note about the LIKE operator is that it is case-insensitive by default in most database systems. This means that if you search for “apple” using the LIKE operator, it will return results that include “Apple”, “APPLE”, “aPpLe”, and so on.
For making the LIKE operator case-sensitive, you can use the “BINARY” keyword in MySQL or the “COLLATE” keyword in other database systems.
For example:
XML
SELECT * FROM products WHERE name LIKE BINARY 'apple%' |
This following query will only return products whose name starts with “apple” and is spelled exactly like that, without capital letters.
This article is contributed by Anannya Uberoi. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or if you want to share more information about the topic discussed above.
Please Login to comment...