sql >> Databasteknik >  >> RDS >> MariaDB

Hur INTE RLIKE fungerar i MariaDB

I MariaDB, NOT RLIKE är en negation av RLIKE operatör.

Med andra ord, när som helst RLIKE operatören skulle returnera 1 , NOT RLIKE returnerar 0 .

Syntax

Syntaxen ser ut så här:

expr NOT RLIKE pat

Där expr är inmatningssträngen och pat är det reguljära uttrycket som du testar strängen mot.

Det motsvarar att göra följande:

NOT (expr RLIKE pat)

Exempel

Här är ett exempel på hur du använder detta i en SELECT uttalande:

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

Resultat:

+-----------------------------+
| 'Coffee' NOT RLIKE '^C.*e$' |
+-----------------------------+
|                           0 |
+-----------------------------+

Här matchas mönstret om inmatningssträngen börjar med C och slutar med e . Det gör det, men för att vi använder NOT RLIKE , får vi ett negativt resultat (0 ).

Ovanstående uttalande motsvarar att göra detta:

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

Resultat:

+-------------------------------+
| NOT ('Coffee' RLIKE '^C.*e$') |
+-------------------------------+
|                             0 |
+-------------------------------+

Jämfört med RLIKE

Här jämför vi resultaten från RLIKE med NOT RLIKE :

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

Resultat:

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

Ett positivt resultat

De tidigare exemplen resulterade i 0 för NOT RLIKE , eftersom strängen gjorde faktiskt matcha mönstret. Här är ett exempel där vi får en 1 , vilket indikerar att strängen inte gör det matcha:

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

Resultat:

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

Alternativ

MariaDB innehåller många funktioner och operatorer som i princip gör samma sak, och detta gäller även NOT RLIKE .

  1. RLIKE är en synonym till REGEXP operatör.
  2. NOT RLIKE är motsvarigheten till NOT REGEXP .
  3. RLIKE och REGEXP kan negeras genom att helt enkelt använda NOT logisk operator.

Därför är alla följande likvärdiga:

expr NOT RLIKE pat
expr NOT REGEXP pat
NOT (expr RLIKE pat)
NOT (expr REGEXP pat)

Och här är ett exempel för att visa:

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";

Resultat:

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

  1. Infoga trigger för att uppdatera en annan tabell med PostgreSQL

  2. Primärnyckel SQL-handledning – Hur man definierar en primärnyckel i en databas

  3. Installera Postgres.app på en Mac

  4. Fel syntax nära ')' anropar lagrad procedur med GETDATE