sql >> Database >  >> RDS >> Mysql

STRCMP() gebruiken om 2 strings in MySQL te vergelijken

Een van de tekenreeksfuncties in MySQL is STRCMP() . Met deze functie kunt u twee strings vergelijken op basis van hun sorteervolgorde.

De functie accepteert twee argumenten. Elk argument is de tekenreeks die moet worden vergeleken. Het retourneert ofwel 1 , -1 , of 0 , afhankelijk van of de eerste tekenreeks groter, kleiner of even groot is als de tweede tekenreeks, afhankelijk van de sorteervolgorde.

Syntaxis

Dit is de syntaxis:

STRCMP(expr1,expr2)

Waar expr1 is de eerste string en expr2 is de tweede string.

Voorbeelden

Hier is een voorbeeld waarbij de eerste string kleiner is dan de tweede string volgens de sorteervolgorde:

SELECT STRCMP('A', 'B');

Resultaat:

+------------------+
| STRCMP('A', 'B') |
+------------------+
|               -1 |
+------------------+

Als we de argumenten omwisselen, krijgen we dit:

SELECT STRCMP('B', 'A');

Resultaat:

+------------------+
| STRCMP('B', 'A') |
+------------------+
|                1 |
+------------------+

En als we dezelfde string voor beide argumenten gebruiken, krijgen we dit:

SELECT STRCMP('A', 'A');

Resultaat:

+------------------+
| STRCMP('A', 'A') |
+------------------+
|                0 |
+------------------+

Natuurlijk kunnen de tekenreeksen (en zullen waarschijnlijk) uit meer dan een enkel teken bestaan:

SELECT STRCMP('A big box', 'Wind and rain') AS Result;

Resultaat:

+--------+
| Result |
+--------+
|     -1 |
+--------+

Collatie

De STRCMP() functie gebruikt de sortering bij het vergelijken van de tekenreeksen. Dit betekent dat u verschillende resultaten kunt krijgen, afhankelijk van de gebruikte sortering. De volgende voorbeelden tonen dit aan.

Hoofdlettergevoelig

In dit voorbeeld voeren we de vergelijking uit met een hoofdletterongevoelige sortering (de _ci een deel van de sortering betekent niet hoofdlettergevoelig):

SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci;
SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci;

SELECT STRCMP(@lowercase, @uppercase) AS Result;

Resultaat:

+--------+
| Result |
+--------+
|      0 |
+--------+

Hoofdlettergevoelig

In dit voorbeeld voeren we de vergelijking uit met een hoofdlettergevoelige sortering (de _cs een deel van de sortering betekent hoofdlettergevoelig):

SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_as_cs;
SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_as_cs;

SELECT STRCMP(@lowercase, @uppercase) AS Result;

Resultaat:

+--------+
| Result |
+--------+
|     -1 |
+--------+

In MySQL kan sortering op verschillende niveaus worden ingesteld (bijvoorbeeld verbindingsniveau, databaseniveau, kolomniveau, enz.). Als u niet zeker weet welke sortering wordt gebruikt, raadpleegt u De sortering vinden in MySQL.


  1. SQL Server BIT-gegevenstype – Ultieme gids

  2. Uitgebreide evenementen voor SSAS

  3. Krijg de LENGTE van een LANGE RAW

  4. Waarom meerdere JOIN's slecht zijn voor query's of de Optimizer niet in de weg staan