sql >> Base de Datos >  >> RDS >> Mysql

Cómo funciona la función REGEXP_LIKE() en MySQL

En MySQL, REGEXP_LIKE() se utiliza para determinar si una cadena coincide o no con una expresión regular.

La función devuelve 1 si la cadena coincide con la expresión regular provista, y 0 si no es así.

Sintaxis

La sintaxis es así:

REGEXP_LIKE(expr, pat[, match_type])

Donde expr es la cadena de entrada y pat es la expresión regular para la que está probando la cadena.

El match_type opcional El argumento le permite refinar la expresión regular. Por ejemplo, puede usar match_type para especificar la coincidencia entre mayúsculas y minúsculas o no.

Ejemplo 1:uso básico

He aquí un ejemplo básico:

SELECT REGEXP_LIKE('Cat', '.*') Result;

Resultado:

+--------+
| Result |
+--------+
|      1 |
+--------+

En este caso, nuestra expresión regular especifica cualquier carácter en cualquier secuencia, por lo que, por supuesto, obtenemos una coincidencia. La función devuelve 1 para indicar una coincidencia.

Ejemplo 2:Sin coincidencia

Aquí hay un ejemplo donde la cadena de entrada no coincide con la expresión regular:

SELECT REGEXP_LIKE('Cat', 'b+') Result;

Resultado:

+--------+
| Result |
+--------+
|      0 |
+--------+

En este caso, nuestra expresión regular especifica que debe haber uno o más b caracteres en cualquier secuencia. Nuestra cadena de entrada no contiene este carácter, por lo que 0 es devuelto.

Ejemplo 3:hacer coincidir el comienzo de una cadena

Aquí hay un ejemplo donde la expresión regular especifica que la cadena debe comenzar con ciertos caracteres:

SELECT REGEXP_LIKE('Cat', '^Ca') Result;

Resultado:

+--------+
| Result |
+--------+
|      1 |
+--------+

Y esto es lo que sucede si no hay ninguna coincidencia:

SELECT REGEXP_LIKE('Cat', '^Da') Result;

Resultado:

+--------+
| Result |
+--------+
|      0 |
+--------+

Ejemplo 4:una consulta de base de datos

Esta función se puede utilizar en WHERE cláusula de consultas de base de datos para devolver solo aquellas filas que contienen el patrón:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

Resultado:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Aquí está la tabla completa:

SELECT AlbumId, AlbumName
FROM Albums;

Resultado:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

Ejemplo 5:el match_type Argumento

Puede proporcionar un argumento adicional para determinar el tipo de coincidencia. Esto le permite especificar cosas como si la coincidencia distingue entre mayúsculas y minúsculas o no, si debe incluir o no terminadores de línea, etc.

Este es un ejemplo de cómo especificar una coincidencia que distingue entre mayúsculas y minúsculas y una coincidencia que no distingue entre mayúsculas y minúsculas:

SELECT 
  REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
  REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

Resultado:

+----------------+------------------+
| Case-Sensitive | Case-Insensitive |
+----------------+------------------+
|              0 |                1 |
+----------------+------------------+

El match_type argumento puede contener los siguientes caracteres:

c
Coincidencia sensible a mayúsculas y minúsculas.
i
Coincidencia insensible a mayúsculas y minúsculas.
m
Modo de varias líneas. Reconocer los terminadores de línea dentro de la cadena. El comportamiento predeterminado es hacer coincidir los terminadores de línea solo al principio y al final de la expresión de cadena.
n
El . el carácter coincide con los terminadores de línea. El valor predeterminado es para . coincidencia para detenerse al final de una línea.
u
Finales de línea exclusivos de Unix. Solo el carácter de nueva línea se reconoce como una línea que termina con . , ^ y $ operadores de coincidencia.

Más ejemplos

Puede ver más ejemplos de expresiones regulares básicas en MySQL REGEXP Examples. REGEXP es un sinónimo de REGEXP_LIKE() , por lo que puede usar los ejemplos indistintamente.

Consulte también Sintaxis de expresiones regulares en la documentación de MySQL.