[MySQL debe saber y saber (6)] [Buscar con expresiones regulares]

Anterior: [MySQL Must Know and Know (5)] [Use comodines para filtrar]

++++++++++++++ Línea de inicio ++++++++++++++++

1. Introducción a las expresiones regulares

Todo tipo de lenguajes de programación, editores de texto y sistemas operativos admiten expresiones regulares.

En segundo lugar, use expresiones regulares de MySQL

MySQL proporciona soporte preliminar para expresiones regulares con la cláusula WHERE, lo que le permite especificar expresiones regulares y filtrar los datos recuperados por SELECT

Solo un subconjunto del lenguaje de expresiones regulares
MySQL admite solo un pequeño subconjunto de la mayoría de las implementaciones de expresiones regulares

2.1 Coincidencia básica de caracteres

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '1000'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

análisis

Esta declaración se parece mucho a una declaración que usa LIKE. Lo que sigue a REGEXP se trata como una expresión regular

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '.000'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

análisis

.Es un carácter especial en el lenguaje de expresiones regulares. Significa hacer coincidir cualquier carácter, por lo que 1000 y 2000 coinciden y regresan

ME GUSTA 与 REGEXP

LIKE coincide con toda la columna. Si el texto coincidente aparece en el valor de la columna, LIKE no se encontrará y no se devolverá la fila correspondiente. Si bien REGEXP coincide con el valor de la columna, si el texto coincidente aparece en el valor de la columna, REGEXP lo encontrará y se devolverá la fila correspondiente.

2.2 Realizar emparejamiento OR

Para buscar una de dos cadenas, utilice |

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '1000|2000'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

2.3 Coincidir con uno de varios personajes

Al especificar un conjunto de caracteres entre [y]

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '[123] Ton'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

análisis

[123] Ton es la abreviatura de [1 | 2 | 3] Ton

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '1|2|3 Ton'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

análisis

[^ 123] coincide con cualquier cosa excepto con estos caracteres

2.4 Rango coincidente

Los conjuntos se pueden usar para definir uno o más caracteres para que coincidan

El rango no se limita al conjunto completo, el rango no es necesariamente solo un número, [az] coincide con cualquier carácter

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '[1-5] Ton'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

2.5 coincide con caracteres especiales

mysql> SELECT vend_name
    -> FROM vendors
    -> WHERE vend_name REGEXP '.'
    -> ORDER BY vend_name;

Inserte la descripción de la imagen aquí

análisis

. Coincide con cualquier carácter, por lo que se recuperan todas las líneas

mysql> SELECT vend_name
    -> FROM vendors
    -> WHERE vend_name REGEXP '\\.'
    -> ORDER BY vend_name;

Inserte la descripción de la imagen aquí

partido\

Para hacer coincidir el carácter de barra invertida en sí, debe usar \\

2.6 Emparejar múltiples instancias

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

análisis

[0-9] ¿Emparejar cualquier número de
palos? Emparejar palos y palos

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '[[:digit:]]{4}'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

análisis

[: dígito:] coincide con cualquier dígito
{4} requiere que el carácter anterior aparezca 4 veces

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '[0-9][0-9][0-9][0-9]'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

2.8 Localizador

mysql> SELECT prod_name
    -> FROM products
    -> WHERE prod_name REGEXP '^[0-9\\.]'
    -> ORDER BY prod_name;

Inserte la descripción de la imagen aquí

análisis

^ El comienzo de la cadena de coincidencia

Hacer que REGXP se comporte como LIKE

La diferencia entre LIKE y REGEXP es que LIKE coincide con la cadena completa y REGEXP coincide con la cadena. Usando localizadores, comenzando cada expresión con ^ y terminando cada expresión con $, puede hacer que REGEXP sea lo mismo que LIKE

+++++++++++++ Línea final ++++++++++++++++

Siguiente: [MySQL debe conocer y conocer (7)] [Crear campo calculado]

Supongo que te gusta

Origin blog.csdn.net/qq_42893334/article/details/108728802
Recomendado
Clasificación