sql >> Database >  >> RDS >> Mysql

Hoe NOT LIKE werkt in MySQL

In MySQL kunt u NOT LIKE . gebruiken om een ​​negatie van de LIKE . uit te voeren exploitant. Met andere woorden, NOT LIKE geeft het tegenovergestelde resultaat terug naar LIKE .

Als de tekenreeks overeenkomt met het opgegeven patroon, is het resultaat 0 , anders is het 1 .

Het patroon hoeft niet per se een letterlijke tekenreeks te zijn. Deze functie kan worden gebruikt met tekenreeksuitdrukkingen en tabelkolommen.

Syntaxis

De syntaxis gaat als volgt:

expr NOT LIKE pat [ESCAPE 'escape_char']

Waar expr is de invoerreeks en pat is het patroon waarvoor u de snaar test.

De optionele ESCAPE clausule kunt u een escape-teken specificeren. Het standaard escape-teken is \ , dus u kunt deze clausule weglaten als u deze niet hoeft te wijzigen.

Deze operator is het equivalent van het volgende doen:

NOT (expr LIKE pat [ESCAPE 'escape_char'])

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld van het gebruik van deze operator in een SELECT verklaring:

SELECT 'Charlie' NOT LIKE 'Char%';

Resultaat:

+----------------------------+
| 'Charlie' NOT LIKE 'Char%' |
+----------------------------+
|                          0 |
+----------------------------+

In dit geval is de retourwaarde 0 wat betekent dat de invoerreeks deed echt overeenkomen met het patroon.

Voorbeeld 2 – Vergeleken met LIKE

Hier wordt het vergeleken met LIKE :

SELECT 
  'Charlie' LIKE 'Char%' AS 'Like',
  'Charlie' NOT LIKE 'Char%' AS 'Not Like';

Resultaat:

+------+----------+
| Like | Not Like |
+------+----------+
|    1 |        0 |
+------+----------+

Voorbeeld 3 – Een gelijkwaardige syntaxis

Zoals vermeld, NOT LIKE is het equivalent van het gebruik van de NOT logische operator tegen de LIKE exploitant. Dit is wat ik bedoel:

SELECT 
  'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax',
  NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';

Resultaat:

+-----------------+-------------------+
| NOT LIKE syntax | Equivalent syntax |
+-----------------+-------------------+
|               0 |                 0 |
+-----------------+-------------------+

Voorbeeld 4 – Een databasevoorbeeld

De LIKE operator wordt vaak gebruikt binnen een WHERE clausule van een SELECT statement bij het opvragen van een database. Daarom NOT LIKE op dezelfde manier kan worden gebruikt.

Wanneer we NOT LIKE gebruiken op deze manier worden de resultaten beperkt tot alleen die records die niet match, maar we zien de daadwerkelijke resultaten (niet alleen een 1 of 0 ).

Hier is een voorbeeld van hoe we deze operator kunnen gebruiken binnen een databasequery:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName NOT LIKE 'B%';

Resultaat:

+----------+------------------------+
| ArtistId | ArtistName             |
+----------+------------------------+
|        1 | Iron Maiden            |
|        2 | AC/DC                  |
|        3 | Allan Holdsworth       |
|        5 | Devin Townsend         |
|        6 | Jim Reeves             |
|        7 | Tom Jones              |
|        8 | Maroon 5               |
|        9 | The Script             |
|       10 | Lit                    |
|       12 | Michael Learns to Rock |
|       13 | Carabao                |
|       14 | Karnivool              |
+----------+------------------------+

In dit geval was het een eenvoudige zoekopdracht die alle artiesten retourneert wiens namen niet begin met de letter B .

Hier is de volledige lijst van artiesten in die tabel:

SELECT ArtistId, ArtistName
FROM Artists;

Resultaat:

+----------+------------------------+
| ArtistId | ArtistName             |
+----------+------------------------+
|        1 | Iron Maiden            |
|        2 | AC/DC                  |
|        3 | Allan Holdsworth       |
|        4 | Buddy Rich             |
|        5 | Devin Townsend         |
|        6 | Jim Reeves             |
|        7 | Tom Jones              |
|        8 | Maroon 5               |
|        9 | The Script             |
|       10 | Lit                    |
|       11 | Black Sabbath          |
|       12 | Michael Learns to Rock |
|       13 | Carabao                |
|       14 | Karnivool              |
|       15 | Birds of Tokyo         |
|       16 | Bodyjar                |
+----------+------------------------+

Dus als we de NOT . verwijderen (d.w.z. we gebruiken gewoon LIKE ) krijgen we dit resultaat:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName LIKE 'B%';

Resultaat:

+----------+----------------+
| ArtistId | ArtistName     |
+----------+----------------+
|        4 | Buddy Rich     |
|       11 | Black Sabbath  |
|       15 | Birds of Tokyo |
|       16 | Bodyjar        |
+----------+----------------+

Voorbeeld 5 – Ontsnappen met het backslash-teken

Het backslash-teken (\ ) kan worden gebruikt om te ontsnappen aan elk van de jokertekens (_ en % ). Hier is een voorbeeld van zo'n zoekopdracht met en zonder het escape-teken:

SELECT 
  'usr+123' NOT LIKE 'usr_123' AS 'Without escape',
  'usr+123' NOT LIKE 'usr\_123' AS 'With escape';

Resultaat:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              0 |           1 |
+----------------+-------------+

Voorbeeld 6 – De ESCAPE Clausule

U kunt ook de ESCAPE . gebruiken clausule om uw eigen aangepaste escape-teken op te geven. Hier is een voorbeeld:

SELECT 
  'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1',
  'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';

Resultaat:

+----------+----------+
| String 1 | String 2 |
+----------+----------+
|        0 |        1 |
+----------+----------+

Voorbeeld 7 – Numerieke uitdrukkingen

Deze operator kan worden gebruikt voor numerieke uitdrukkingen. Hier is een voorbeeld:

SELECT 
  1234 NOT LIKE '12%',
  1234 NOT LIKE '12_';

Resultaat:

+---------------------+---------------------+
| 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' |
+---------------------+---------------------+
|                   0 |                   1 |
+---------------------+---------------------+

  1. Overeenkomende algoritme in SQL

  2. DATE_ADD() Voorbeelden – MySQL

  3. Hoe voorloop- en volgspaties in SQL Server te verwijderen – TRIM()

  4. MySQL-fout 1436:Thread-stack overschrijding, met eenvoudige query