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.