Resumo : neste tutorial, você aprenderá como usar a REGEXP_REPLACE()
função MySQL para substituir correspondências por uma nova substring.
Introdução à função MySQL REGEXP_REPLACE
A REGEXP_REPLACE()
função substitui as correspondências de uma expressão regular por uma nova substring.
Aqui está a sintaxe da REGEXP_REPLACE()
função:
REGEXP_REPLACE(
string,
pattern,
replacement,
position,
occurrence,
match_type
)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
string
: a string de entrada onde você deseja encontrar as correspondências.pattern
: o padrão de expressão regular que você deseja corresponder.replacement
: Esta é a nova substring que a função substituirá as correspondências.position
: a posição na string em que a função inicia a pesquisa. O valor padrão é 1, que instrui a função a pesquisar desde o início da string.occurrence
: determina qual ocorrência de uma correspondência será substituída. O valor padrão de ocorrência é zero (0), que substitui todas as ocorrências.match_type
: esta é uma string que contém uma ou mais opções que instruem como a função deve realizar a correspondência.
A função REGEXP_REPLACE()
retorna a string de resultado onde as ocorrências das correspondências são substituídas pela nova substring.
Se string, padrão ou substituição for NULL
, a função REGEXP_REPLACE()
retornará NULL
.
Exemplos de funções MySQL REGEXP_REPLACE
Vejamos alguns exemplos de uso da REGEXP_REPLACE()
função.
1) Exemplo simples de função MySQL REGEXP_REPLACE()
O exemplo a seguir mostra como substituir todos os caracteres que não sejam dígitos em um número de telefone por uma string vazia:
SELECT
REGEXP_REPLACE('(212)-456-7890', '\\D', '') phone_number;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------------+
| phone_number |
+--------------+
| 2124567890 |
+--------------+
1 row in set (0.01 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, o padrão \\D
corresponde a caracteres não numéricos na sequência de entrada que inclui os caracteres (
, )
e -
. Ele substitui esses caracteres por uma string vazia e retorna o número de telefone apenas com dígitos.
2) exemplo de posição
O seguinte inicia a pesquisa na posição 6 e substitui as correspondências por uma string vazia:
SELECT
REGEXP_REPLACE('(212)-456-7890', '\\D', '', 6) phone_number;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------------+
| phone_number |
+--------------+
| (212)4567890 |
+--------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, a REGEXP_REPLACE()
função substitui o primeiro e o segundo caracteres – por uma string vazia.
3) exemplo de ocorrência
O exemplo a seguir usa a REGEXP_REPLACE()
função para substituir a primeira ocorrência de um caractere que não seja um dígito por um espaço:
SELECT
REGEXP_REPLACE('+1(484)-476-0002', '\\D', '', 1, 1) phone_number;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------------+
| phone_number |
+-----------------+
| 1(484)-476-0002 |
+-----------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, usamos o occurrence
argumento com valor 1 para instruir a função REGEXP_REPLACE
a substituir apenas a primeira ocorrência.
4) Usando a função REGEXP_REPLACE com dados da tabela
Primeiro, crie uma nova tabela chamada contacts
com três campos: id
, name
e phone
:
CREATE TABLE contacts(
id INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
phone VARCHAR(25) NOT NULL,
PRIMARY KEY(id)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, insira cinco linhas na contacts
tabela:
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');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, use a REGEXP_REPLACE()
função para substituir caracteres não numéricos no número de telefone por uma string vazia:
UPDATE
contacts
SET
phone = REGEXP_REPLACE(phone, '\\D', '');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5 Changed: 5 Warnings: 0
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A UPDATE
instrução modificou todas as cinco linhas da contacts
tabela.
Por fim, consulte os dados da contacts
tabela:
SELECT * FROM contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+-------------+-------------+
| 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)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a
REGEXP_REPLACE()
função para substituir correspondências por uma nova substring usando expressões regulares.