En av strängfunktionerna i MySQL är STRCMP() . Denna funktion låter dig jämföra två strängar enligt deras sorteringsordning.
Funktionen accepterar två argument. Varje argument är strängen att jämföra. Den returnerar antingen 1 , -1 eller 0 , beroende på om den första strängen är större, mindre eller samma storlek som den andra strängen, enligt sorteringsordning.
Syntax
Här är syntaxen:
STRCMP(expr1,expr2)
Där expr1 är den första strängen och expr2 är den andra strängen.
Exempel
Här är ett exempel där den första strängen är mindre än den andra strängen enligt sorteringsordning:
SELECT STRCMP('A', 'B'); Resultat:
+------------------+
| STRCMP('A', 'B') |
+------------------+
| -1 |
+------------------+ Om vi byter argument runt får vi detta:
SELECT STRCMP('B', 'A'); Resultat:
+------------------+
| STRCMP('B', 'A') |
+------------------+
| 1 |
+------------------+ Och om vi använder samma sträng för båda argumenten får vi detta:
SELECT STRCMP('A', 'A'); Resultat:
+------------------+
| STRCMP('A', 'A') |
+------------------+
| 0 |
+------------------+ Naturligtvis kan (och kommer förmodligen) strängarna bestå av mer än ett enda tecken:
SELECT STRCMP('A big box', 'Wind and rain') AS Result; Resultat:
+--------+ | Result | +--------+ | -1 | +--------+
Sortering
STRCMP() funktion använder sorteringen när man jämför strängarna. Detta innebär att du kan få olika resultat beroende på vilken sortering som används. Följande exempel visar detta.
Inte skiftlägeskänslig
I det här exemplet utför vi jämförelsen med en skiftlägesokänslig sortering (_ci del av sammanställningen betyder skiftlägesokänslig):
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 | +--------+
skiftlägeskänslig
I det här exemplet utför vi jämförelsen med en skiftlägeskänslig sortering (_cs del av sammanställningen betyder skiftlägeskänslig):
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 ställas in på olika nivåer (t.ex. anslutningsnivå, databasnivå, kolumnnivå, etc). Om du inte är säker på vilken sortering som används, se Hur du hittar sorteringen i MySQL.