I MariaDB, COERCIBILITY() är en systemfunktion som returnerar kollationstvingningsvärdet för dess strängargument.
Den definierar hur sorteringar kommer att konverteras vid kollationskonflikt. I sådana konflikter omvandlas ett uttryck med högre tvångsförmåga till sammanställning av ett uttryck med lägre tvångsförmåga.
Syntax
Syntaxen ser ut så här:
COERCIBILITY(str)
Där str är uttrycket som du skulle vilja få tvångsmöjlighet för.
COERCIBILITY() funktion returnerar ett värde mellan 0 och 5 , som beskrivs i följande tabell:
| Tvång | Beskrivning | Exempel |
|---|---|---|
| 0 | Explicit | Värde med en COLLATE klausul |
| 1 | Ingen sortering | Sammanfogade strängar med olika sorteringar |
| 2 | Underförstått | Kolumnvärde |
| 3 | Konstant | Returvärdet från funktioner som USER() , VERSION() , etc |
| 4 | Tvångsbar | Literal sträng |
| 5 | Ignoreras | NULL eller härledd från NULL |
Exempel
Här är ett exempel att visa:
SELECT COERCIBILITY('Green'); Resultat:
+-----------------------+
| COERCIBILITY('Green') |
+-----------------------+
| 4 |
+-----------------------+
Detta är en normal sträng och därför är tvångsmöjligheten 4 .
Explicit sortering
Här är ett exempel på att explicit specificera sorteringen med COLLATE klausul.:
SELECT COERCIBILITY('Mango' COLLATE utf8_spanish_ci); Resultat:
+-----------------------------------------------+
| COERCIBILITY('Mango' COLLATE utf8_spanish_ci) |
+-----------------------------------------------+
| 0 |
+-----------------------------------------------+
Detta returnerar 0 eftersom jag uttryckligen angav sorteringen med COLLATE klausul.
Databaskolumn
I det här exemplet returnerar jag data från en databaskolumn.:
SELECT
PetName,
COERCIBILITY(PetName)
FROM Pets
LIMIT 1; Resultat:
+---------+-----------------------+ | PetName | COERCIBILITY(PetName) | +---------+-----------------------+ | Fluffy | 2 | +---------+-----------------------+
Det faktum att det är en databaskolumn betyder att det är en implicit sammanställning, och därför får vi en tvångsmöjlighet på 2 .
Konstanter
I det här exemplet får jag tvångsförmågan för returvärdet från den inbyggda VERSION() funktion:
SELECT COERCIBILITY(VERSION()); Resultat:
+-------------------------+ | COERCIBILITY(VERSION()) | +-------------------------+ | 3 | +-------------------------+
Nullvärden
Här är vad som händer när vi skickar null :
SELECT COERCIBILITY(null); Resultat:
+--------------------+ | COERCIBILITY(null) | +--------------------+ | 6 | +--------------------+
Nullvärden kan ignoreras, så vi får en tvångsförmåga på 6 .
Inga argument
Anropar COERCIBILITY() utan några argument resulterar i ett fel:
SELECT COERCIBILITY(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COERCIBILITY'