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'