sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan COERCIBILITY() virker i MariaDB

I MariaDB, COERCIBILITY() er en systemfunktion, der returnerer kollationstvangsværdien af ​​dets strengargument.

Den definerer, hvordan sorteringer konverteres i tilfælde af kollationskonflikt. I sådanne konflikter konverteres et udtryk med en højere tvangsevne til sammenstilling af et udtryk med en lavere tvangsevne.

Syntaks

Syntaksen ser sådan ud:

COERCIBILITY(str)

Hvor str er det udtryk, du gerne vil have tvangsmuligheden for.

COERCIBILITY() funktion returnerer en værdi mellem 0 og 5 , som skitseret i følgende tabel:

Tvangsmulighed Beskrivelse Eksempel
0 Eksplicit Værdi ved hjælp af en COLLATE klausul
1 Ingen sortering Sammenkædede strenge ved hjælp af forskellige sorteringer
2 Implicit Kolonneværdi
3 Konstant Returværdien fra funktioner som USER() , VERSION() osv.
4 tvangsmæssigt Literal streng
5 Ignorabel NULL eller afledt af NULL

Eksempel

Her er et eksempel til demonstration:

SELECT COERCIBILITY('Green');

Resultat:

+-----------------------+
| COERCIBILITY('Green') |
+-----------------------+
|                     4 |
+-----------------------+

Dette er en normal streng, og derfor er tvangsmuligheden 4 .

Eksplicit sortering

Her er et eksempel på eksplicit specificering af sorteringen med COLLATE klausul.:

SELECT COERCIBILITY('Mango' COLLATE utf8_spanish_ci);

Resultat:

+-----------------------------------------------+
| COERCIBILITY('Mango' COLLATE utf8_spanish_ci) |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+

Dette returnerer 0 fordi jeg eksplicit specificerede sorteringen med COLLATE klausul.

Databasekolonne

I dette eksempel returnerer jeg data fra en databasekolonne.:

SELECT 
    PetName,
    COERCIBILITY(PetName)
FROM Pets
LIMIT 1;

Resultat:

+---------+-----------------------+
| PetName | COERCIBILITY(PetName) |
+---------+-----------------------+
| Fluffy  |                     2 |
+---------+-----------------------+

Det faktum, at det er en databasekolonne, betyder, at det er en implicit sammenstilling, og derfor får vi en tvangsmulighed på 2 .

Konstanter

I dette eksempel får jeg tvangsevnen for returværdien fra den indbyggede VERSION() funktion:

SELECT COERCIBILITY(VERSION());

Resultat:

+-------------------------+
| COERCIBILITY(VERSION()) |
+-------------------------+
|                       3 |
+-------------------------+

Nul-værdier

Her er, hvad der sker, når vi sender null :

SELECT COERCIBILITY(null);

Resultat:

+--------------------+
| COERCIBILITY(null) |
+--------------------+
|                  6 |
+--------------------+

Nulværdier kan ignoreres, og derfor får vi en tvangsevne på 6 .

Ingen argumenter

Kalder COERCIBILITY() uden nogen argumenter resulterer i en fejl:

SELECT COERCIBILITY();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COERCIBILITY'

  1. Hvad er forskellen mellem MS Access og SQL?

  2. Oracle TNS-navne vises ikke, når der tilføjes ny forbindelse til SQL Developer

  3. Hvordan afhjælper jeg årsagen til dvale-undtagelse. IllegalArgumentException opstod under opkald til setter?

  4. Opret en sammenkædet server mellem to Docker-containere, der kører SQL Server (T-SQL-eksempel)