sql >> Databasteknik >  >> RDS >> Mysql

Hur INTE RLIKE fungerar i MySQL

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 |
+----------+----------+----------+----------+----------+

  1. PHP + SQL Server - Hur ställer man in teckenuppsättning för anslutning?

  2. T-SQL-buggar, fallgropar och bästa praxis – pivotering och unpivoting

  3. Undviker nyckelordsliknande kolumnnamn i Postgres

  4. Postgres:INFOGA om det inte redan finns