sql >> Database teknologi >  >> RDS >> Mysql

Sådan bruges STRCMP() til at sammenligne 2 strenge i MySQL

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.


  1. Dato i en URL dd/mm/åååå

  2. Opbygning af en kommasepareret liste over værdier i en Oracle SQL-sætning

  3. java.security.AccessControlException:adgang nægtet (java.security.SecurityPermission authProvider.SunMSCAPI)

  4. Dvale og Multi-Tenant Database ved hjælp af skemaer i PostgreSQL