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'