Course
Regular Expressions
MySQL Tutorial
This SQL tutorial is structured for beginners to guide them from the foundational concepts to advanced data manipulation and querying techniques in SQL. By the end of this tutorial, you will have developed a robust understanding of SQL, equipping you with the knowledge to efficiently manage and analyze data across various database systems. This guide sets the stage for your growth into a skilled data professional, ready to tackle complex data challenges and contribute to the field of data analysis and database management.
Regular Expressions
MySQL supports various types of pattern matching operations to retrieve filtered result-sets from huge database tables. In previous chapters, we have already learned about the LIKE operator for pattern matching. In this chapter, we will see another pattern matching operation based on regular expressions.
MySQL Regular Expressions
A regular expression is loosely defined as a sequence of characters that represent a pattern in an input text. It is used to locate or replace text strings using some patterns; this pattern can either be a single character, multiple characters or words, etc.
MySQL implements regular expression support using International Components for Unicode (ICU), which provides full Unicode support and is multi-byte safe.
In MySQL, it is a powerful way to perform a complex search operations in a database to retrieve desired content. And unlike the LIKE operator, the regular expressions are not restricted on search patterns (like % and _) as they use several other meta characters to expand the flexibility and control during pattern matching. This is performed using the REGEXP operator.
Syntax
Following is the basic syntax of the REGEXP operator in MySQL −
expression REGEXP pattern
Patterns used with REGEXP
Following is the table of pattern, which can be used along with the REGEXP operator.
Examples
The following example demonstrates the usage of some patterns mentioned in the table above, along with the REGEXP operator. For that, we are first creating a database table to perform the search on.
Assume we are creating a table called CUSTOMERS using the following query −
CREATE TABLE CUSTOMERS ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID));
Now, insert some values into it using the INSERT statements given below −
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),(2, 'Khilan', 25, 'Delhi', 1500.00 ),(3, 'Kaushik', 23, 'Kota', 2000.00 ),(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),(5, 'Hardik', 27, 'Bhopal', 8500.00 ),(6, 'Komal', 22, 'Hyderabad', 4500.00 ),(7, 'Muffy', 24, 'Indore', 10000.00 );
Execute the following query to display all the records present in above created table −
SELECT * FROM CUSTOMERS;
Following are the records present in CUSTOMERS table −
REGEXP with Patterns −
Now, we are finding all the records in the CUSTOMERS table whose name starts with 'k' −
SELECT * FROM CUSTOMERS WHERE NAME REGEXP '^k';
Executing the query above will produce the following output −
The following query retrieves all records in CUSTOMERS table whose name ends with 'sh' −
SELECT * FROM CUSTOMERS WHERE NAME REGEXP 'sh$';
Executing the query above will produce the following output −
Here, we are retrieving all the records whose name contain 'sh' −
SELECT * FROM CUSTOMERS WHERE NAME REGEXP 'sh';
As we can see the output, there are only two names that contain 'sh'.
In the following query, we are finding all the names starting with a vowel and ending with 'ol' −
SELECT * FROM CUSTOMERS WHERE NAME REGEXP '^[aeiou].*ol$';
It returned an empty set because the CUSTOMERS table do not have any names who starts with vowel and ends with 'ol'
Empty set (0.00 sec)
The following query finds all the names in the CUSTOMERS table whose name starts with a consonant −
SELECT * FROM CUSTOMERS WHERE NAME REGEXP '^[^aeiou]';
Executing the query above will produce the following output −
Regular Expression Functions and Operators
Following is the table of functions and operators of regular expressions.