Summary: in this tutorial, you will learn how to use the MySQL REGEXP_REPLACE()
function to replace matches with a new substring.
Introduction to the MySQL REGEXP_REPLACE function
The REGEXP_REPLACE()
function replaces the matches of a regular expression with a new substring.
Here’s the syntax of the REGEXP_REPLACE()
function:
REGEXP_REPLACE(
string,
pattern,
replacement,
position,
occurrence,
match_type
)
Code language: SQL (Structured Query Language) (sql)
In this syntax:
string
: The input string where you want to find the matches.pattern
: The regular expression pattern that you want to match.replacement
: This is the new substring that the function will replace the matches.position
: The position in the string at which the function starts searching. The default value is 1 which instructs the function to search from the beginning of the string.occurrence
: This determines which occurrence of a match to replace. The default value of occurrence is zero (0), which replaces all occurrences.match_type
: This is a string that contains one or more options that instruct how the function should perform matching.
The function REGEXP_REPLACE()
returns the result string where occurrences of the matches are replaced with the new substring.
If string, pattern, or replacement is NULL
, the function REGEXP_REPLACE()
will return NULL
.
MySQL REGEXP_REPLACE function examples
Let’s take some examples of using the REGEXP_REPLACE()
function.
1) Simple MySQL REGEXP_REPLACE() function example
The following example shows how to replace all non-digit characters in a phone number with an empty string:
SELECT
REGEXP_REPLACE('(212)-456-7890', '\\D', '') phone_number;
Code language: SQL (Structured Query Language) (sql)
Output:
+--------------+
| phone_number |
+--------------+
| 2124567890 |
+--------------+
1 row in set (0.01 sec)
Code language: SQL (Structured Query Language) (sql)
In this example, the pattern \\D
matches non-digit characters in the input string that includes the characters (
, )
, and -
. It replaces these characters with an empty string and returns the phone number with only digits.
2) position example
The following starts searching at the position 6 and replace the matches with an empty string:
SELECT
REGEXP_REPLACE('(212)-456-7890', '\\D', '', 6) phone_number;
Code language: SQL (Structured Query Language) (sql)
Output:
+--------------+
| phone_number |
+--------------+
| (212)4567890 |
+--------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
In this example, the REGEXP_REPLACE()
function replaces the first and second characters – with an empty string.
3) occurrence example
The following example uses the REGEXP_REPLACE()
function to replace the first occurrence of a non-digit character with a space:
SELECT
REGEXP_REPLACE('+1(484)-476-0002', '\\D', '', 1, 1) phone_number;
Code language: SQL (Structured Query Language) (sql)
Output:
+-----------------+
| phone_number |
+-----------------+
| 1(484)-476-0002 |
+-----------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
In this example, we use the occurrence
argument with the value 1 to instruct the function REGEXP_REPLACE
to replace only the first occurrence.
4) Using REGEXP_REPLACE function with table data
First, create a new table called contacts
with three fields: id
, name
, and phone
:
CREATE TABLE contacts(
id INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
phone VARCHAR(25) NOT NULL,
PRIMARY KEY(id)
);
Code language: SQL (Structured Query Language) (sql)
Second, insert five rows into the contacts
table:
INSERT INTO contacts (name, phone)
VALUES
('John Doe', '+1(484)-476-0002'),
('Jane Smith', '+1(555)-987-6543'),
('Bob Johnson', '+1(555)-555-5555'),
('Alice Brown', '+1(555)-111-2222'),
('Eve White', '+1(555)-999-8888');
Code language: SQL (Structured Query Language) (sql)
Third, use the REGEXP_REPLACE()
function to replace non-digit characters in the phone number with an empty string:
UPDATE
contacts
SET
phone = REGEXP_REPLACE(phone, '\\D', '');
Code language: SQL (Structured Query Language) (sql)
Output:
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5 Changed: 5 Warnings: 0
Code language: SQL (Structured Query Language) (sql)
The UPDATE
statement modified all five rows in the contacts
table.
Finally, query data from the contacts
table:
SELECT * FROM contacts;
Code language: SQL (Structured Query Language) (sql)
Output:
+----+-------------+-------------+
| id | name | phone |
+----+-------------+-------------+
| 1 | John Doe | 14844760002 |
| 2 | Jane Smith | 15559876543 |
| 3 | Bob Johnson | 15555555555 |
| 4 | Alice Brown | 15551112222 |
| 5 | Eve White | 15559998888 |
+----+-------------+-------------+
5 rows in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
Summary
- Use the
REGEXP_REPLACE()
function to replace matches with a new substring using regular expressions.