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'