Função MySQL REGEXP_REPLACE()

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 \\Dcorresponde 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 occurrenceargumento com valor 1 para instruir a função REGEXP_REPLACEa substituir apenas a primeira ocorrência.

4) Usando a função REGEXP_REPLACE com dados da tabela

Primeiro, crie uma nova tabela chamada contactscom três campos: id, namee 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 contactstabela:

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: 0Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A UPDATEinstrução modificou todas as cinco linhas da contactstabela.

Por fim, consulte os dados da contactstabela:

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *