I MySQL, 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 1 – Grundläggande användning
Här är ett exempel på hur du använder detta i en SELECT
uttalande:
SELECT 'Coffee' NOT RLIKE '^C.*e$' AS 'Result';
Resultat:
+--------+ | Result | +--------+ | 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$') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | 0 | +--------+
Exempel 2 – 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 | +-------+-----------+
Exempel 3 – 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
MySQL innehåller många funktioner och operatorer som i princip gör samma sak, och detta gäller även NOT RLIKE
.
För det första, RLIKE
är en synonym till REGEXP_LIKE()
funktion (som är REGEXP
).
För det andra, NOT RLIKE
är motsvarigheten till NOT REGEXP
.
För det tredje, RLIKE
, REGEXP
, och REGEXP_LIKE()
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) NOT REGEXP_LIKE(expr, 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', NOT REGEXP_LIKE('Car', '^C') AS 'Result 5';
Resultat:
+----------+----------+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | Result 4 | Result 5 | +----------+----------+----------+----------+----------+ | 0 | 0 | 0 | 0 | 0 | +----------+----------+----------+----------+----------+