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

Cómo funciona NOT RLIKE en MySQL

En MySQL, NOT RLIKE es una negación del RLIKE operador.

En otras palabras, cada vez que RLIKE el operador devolvería 1 , NOT RLIKE devolverá 0 .

Sintaxis

La sintaxis es así:

expr NOT RLIKE pat

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

Es el equivalente a hacer lo siguiente:

NOT (expr RLIKE pat)

Ejemplo 1:uso básico

Aquí hay un ejemplo de cómo usar esto en un SELECT declaración:

SELECT 'Coffee' NOT RLIKE '^C.*e$' AS 'Result';

Resultado:

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

Aquí, el patrón coincide si la cadena de entrada comienza con C y termina con e . Sí, pero porque usamos NOT RLIKE , obtenemos un resultado negativo (0 ).

La declaración anterior es equivalente a hacer esto:

SELECT NOT ('Coffee' RLIKE '^C.*e$') AS 'Result';

Resultado:

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

Ejemplo 2 – Comparado con RLIKE

Aquí comparamos los resultados de RLIKE con NOT RLIKE :

SELECT 
  'Coffee' RLIKE '^C.*e$' AS 'RLIKE',
  'Coffee' NOT RLIKE '^C.*e$' AS 'NOT RLIKE';

Resultado:

+-------+-----------+
| RLIKE | NOT RLIKE |
+-------+-----------+
|     1 |         0 |
+-------+-----------+

Ejemplo 3:un resultado positivo

Los ejemplos anteriores resultaron en 0 para NOT RLIKE , porque la cadena hizo en realidad coincide con el patrón. Aquí hay un ejemplo donde obtenemos un 1 , lo que indica que la cadena no coincidencia:

SELECT 
  'Funny' RLIKE '^C.*e$' AS 'RLIKE',
  'Funny' NOT RLIKE '^C.*e$' AS 'NOT RLIKE';

Resultado:

+-------+-----------+
| RLIKE | NOT RLIKE |
+-------+-----------+
|     0 |         1 |
+-------+-----------+

Alternativas

MySQL incluye muchas funciones y operadores que esencialmente hacen lo mismo, y esto también se aplica a NOT RLIKE .

En primer lugar, RLIKE es sinónimo de REGEXP_LIKE() función (como es REGEXP ).

En segundo lugar, NOT RLIKE es el equivalente de NOT REGEXP .

En tercer lugar, RLIKE , REGEXP y REGEXP_LIKE() se puede negar simplemente usando el NOT operador lógico.

Por lo tanto, todos los siguientes son equivalentes:

expr NOT RLIKE pat
expr NOT REGEXP pat
NOT (expr RLIKE pat)
NOT (expr REGEXP pat)
NOT REGEXP_LIKE(expr, pat)

Y aquí hay un ejemplo para demostrarlo:

SELECT 
  'Car' NOT RLIKE '^C' AS 'Result 1',
  'Car' NOT REGEXP '^C' AS 'Result 2',
  NOT ('Car' RLIKE '^C') AS 'Result 3',
  NOT ('Car' REGEXP '^C') AS 'Result 4',
  NOT REGEXP_LIKE('Car', '^C') AS 'Result 5';

Resultado:

+----------+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 | Result 5 |
+----------+----------+----------+----------+----------+
|        0 |        0 |        0 |        0 |        0 |
+----------+----------+----------+----------+----------+