En af strengfunktionerne i MySQL er STRCMP()
. Denne funktion giver dig mulighed for at sammenligne to strenge i henhold til deres sorteringsrækkefølge.
Funktionen accepterer to argumenter. Hvert argument er strengen, der skal sammenlignes. Det returnerer enten 1
, -1
eller 0
, afhængigt af om den første streng er større, mindre eller samme størrelse som den anden streng, alt efter sorteringsrækkefølge.
Syntaks
Her er syntaksen:
STRCMP(expr1,expr2)
Hvor expr1
er den første streng og expr2
er den anden streng.
Eksempler
Her er et eksempel, hvor den første streng er mindre end den anden streng i henhold til sorteringsrækkefølge:
SELECT STRCMP('A', 'B');
Resultat:
+------------------+ | STRCMP('A', 'B') | +------------------+ | -1 | +------------------+
Hvis vi skifter argumenterne rundt, får vi dette:
SELECT STRCMP('B', 'A');
Resultat:
+------------------+ | STRCMP('B', 'A') | +------------------+ | 1 | +------------------+
Og hvis vi bruger den samme streng til begge argumenter, får vi dette:
SELECT STRCMP('A', 'A');
Resultat:
+------------------+ | STRCMP('A', 'A') | +------------------+ | 0 | +------------------+
Selvfølgelig kan (og vil sandsynligvis) strengene bestå af mere end et enkelt tegn:
SELECT STRCMP('A big box', 'Wind and rain') AS Result;
Resultat:
+--------+ | Result | +--------+ | -1 | +--------+
Samling
STRCMP()
funktion bruger sorteringen, når strengene sammenlignes. Det betyder, at du kan få forskellige resultater afhængigt af den anvendte sortering. De følgende eksempler viser dette.
Uafhængig af store og små bogstaver
I dette eksempel udfører vi sammenligningen ved hjælp af en versal ufølsom sortering (_ci
en del af sorteringen betyder ufølsom mellem store og små bogstaver):
SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci; SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci; SELECT STRCMP(@lowercase, @uppercase) AS Result;
Resultat:
+--------+ | Result | +--------+ | 0 | +--------+
Stilling af store og små bogstaver
I dette eksempel udfører vi sammenligningen ved hjælp af en versalfølsom sortering (_cs
en del af sorteringen betyder forskel på store og små bogstaver):
SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_as_cs; SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_as_cs; SELECT STRCMP(@lowercase, @uppercase) AS Result;
Resultat:
+--------+ | Result | +--------+ | -1 | +--------+
I MySQL kan sortering indstilles på forskellige niveauer (f.eks. forbindelsesniveau, databaseniveau, kolonneniveau osv.). Hvis du ikke er sikker på, hvilken sortering der bruges, kan du se Sådan finder du sorteringen i MySQL.