sql >> Databasteknik >  >> RDS >> Mysql

Hur NOT LIKE fungerar i MySQL

I MySQL kan du använda NOT LIKE för att utföra en negation av LIKE operatör. Med andra ord, NOT LIKE returnerar det motsatta resultatet till LIKE .

Om strängen matchar mönstret som tillhandahålls blir resultatet 0 , annars är det 1 .

Mönstret behöver inte nödvändigtvis vara en bokstavlig sträng. Denna funktion kan användas med stränguttryck och tabellkolumner.

Syntax

Syntaxen ser ut så här:

expr NOT LIKE pat [ESCAPE 'escape_char']

Där expr är inmatningssträngen och pat är mönstret som du testar strängen mot.

Den valfria ESCAPE sats låter dig ange ett escape-tecken. Standardtecknet för escape är \ , så du kan utelämna den här klausulen om du inte behöver ändra den.

Denna operatör motsvarar att göra följande:

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

Exempel 1 – Grundläggande användning

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

SELECT 'Charlie' NOT LIKE 'Char%';

Resultat:

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

I det här fallet är returvärdet 0 vilket betyder att inmatningssträngen gjorde faktiskt matcha mönstret.

Exempel 2 – Jämfört med LIKE

Här jämförs det med LIKE :

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

Resultat:

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

Exempel 3 – En likvärdig syntax

Som nämnts, NOT LIKE motsvarar att använda NOT logisk operator mot LIKE operatör. Så här menar jag:

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

Resultat:

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

Exempel 4 – Ett databasexempel

LIKE operatorn används ofta inom en WHERE sats av en SELECT uttalande när du frågar efter en databas. Därför NOT LIKE kan användas på samma sätt.

När vi använder NOT LIKE på detta sätt begränsar den resultaten till endast de poster som inte matchar, men vi ser de faktiska resultaten (inte bara en 1 eller 0 ).

Här är ett exempel på hur vi kan använda den här operatorn i en databasfråga:

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

Resultat:

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

I det här fallet var det en enkel fråga som returnerar alla artister vars namn inte börja med bokstaven B .

Här är hela listan över artister i tabellen:

SELECT ArtistId, ArtistName
FROM Artists;

Resultat:

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

Så om vi tar bort NOT (dvs vi använder bara LIKE ) får vi det här resultatet:

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

Resultat:

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

Exempel 5 – Undvika med omvänt snedstreck

Omvänt snedstreck (\ ) kan användas för att escape alla jokertecken (_ och % ). Här är ett exempel på en sådan sökning med och utan escape-tecknet:

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

Resultat:

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

Exempel 6 – ESCAPE Klausul

Du kan också använda ESCAPE klausul för att specificera din egen anpassade escape-karaktär. Här är ett exempel:

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

Resultat:

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

Exempel 7 – Numeriska uttryck

Denna operator kan användas på numeriska uttryck. Här är ett exempel:

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

Resultat:

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

  1. Pivottabell och sammanfoga kolumner

  2. Definiera en variabel inom select och använd den inom samma select

  3. Hur gör jag en sammansatt nyckel med SQL Server Management Studio?

  4. Skapa en anpassad fraktmetod i OpenCart:Del två