Jedna z řetězcových funkcí v MySQL je STRCMP()
. Tato funkce umožňuje porovnat dva řetězce podle jejich pořadí řazení.
Funkce přijímá dva argumenty. Každý argument je řetězec k porovnání. Vrací buď 1
, -1
, nebo 0
, v závislosti na tom, zda je první řetězec větší, menší nebo stejně velký jako druhý řetězec, podle pořadí řazení.
Syntaxe
Zde je syntaxe:
STRCMP(výraz1,výraz2)
Kde expr1
je první řetězec a expr2
je druhý řetězec.
Příklady
Zde je příklad, kdy je první řetězec menší než druhý řetězec podle pořadí řazení:
SELECT STRCMP('A', 'B');
Výsledek:
+-------------------+| STRCMP('A', 'B') |+------------------+| -1 |+------------------+
Pokud prohodíme argumenty, dostaneme toto:
SELECT STRCMP('B', 'A');
Výsledek:
+-------------------+| STRCMP('B', 'A') |+------------------+| 1 |+------------------+
A pokud použijeme stejný řetězec pro oba argumenty, dostaneme toto:
SELECT STRCMP('A', 'A');
Výsledek:
+-------------------+| STRCMP('A', 'A') |+------------------+| 0 |+------------------+
Řetězce samozřejmě mohou (a pravděpodobně budou) obsahovat více než jeden znak:
SELECT STRCMP('Velká krabice', 'Vítr a déšť') AS Výsledek;
Výsledek:
+---------+| Výsledek |+--------+| -1 |+---------+
Řazení
STRCMP()
funkce používá řazení při porovnávání řetězců. To znamená, že můžete získat různé výsledky v závislosti na použitém řazení. Následující příklady to demonstrují.
Nerozlišují se malá a velká písmena
V tomto příkladu provádíme porovnání pomocí řazení bez rozlišení malých a velkých písmen (_ci
část porovnávání znamená, že se nerozlišují malá a velká písmena):
SET @malá písmena =_utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci;SET @velká písmena =_utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci;SELECT STRCMP(@malá písmena, @velká písmena;) AS ResVýsledek:
+---------+| Výsledek |+--------+| 0 |+--------+Rozlišovat malá a velká písmena
V tomto příkladu provádíme porovnání pomocí řazení rozlišující malá a velká písmena (
_cs
část porovnávání znamená rozlišovat malá a velká písmena):SET @malá písmena =_utf8mb4 'a' COLLATE utf8mb4_0900_as_cs;SET @velká písmena =_utf8mb4 'A' COLLATE utf8mb4_0900_as_cs;SELECT STRCMP(@malá písmena, @velká písmena) JAKO výsledek;Výsledek:
+---------+| Výsledek |+---------+| -1 |+--------+V MySQL lze řazení nastavit na různých úrovních (např. úroveň připojení, úroveň databáze, úroveň sloupců atd.). Pokud si nejste jisti, jaké řazení se používá, přečtěte si článek Jak najít řazení v MySQL.