sql >> Databáze >  >> RDS >> Mysql

Jak používat STRCMP() k porovnání 2 řetězců v MySQL

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;
 Vý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.


  1. Funkce Oracle REPLACE() nezpracovává návrat vozíku a posun řádků

  2. Postgres UUID JDBC nefunguje

  3. Jak přidat automaticky se zvyšující primární klíč do existující tabulky v PostgreSQL?

  4. Jaký je rozdíl mezi varchar a varchar2 v Oracle?