In MariaDB, COERCIBILITY()
is een systeemfunctie die de coërcibiliteitswaarde van het stringargument retourneert.
Het definieert hoe sorteringen worden geconverteerd in het geval van een sorteerconflict. In dergelijke conflicten wordt een uitdrukking met een hogere coërcibiliteit omgezet in de sortering van een uitdrukking met een lagere coërcibiliteit.
Syntaxis
De syntaxis gaat als volgt:
COERCIBILITY(str)
Waar str
is de uitdrukking waarvoor u de dwang wilt krijgen.
De COERCIBILITY()
functie retourneert een waarde tussen 0
en 5
, zoals beschreven in de volgende tabel:
Dwangkracht | Beschrijving | Voorbeeld |
---|---|---|
0 | Expliciet | Waarde met een COLLATE clausule |
1 | Geen sortering | Aaneengeschakelde tekenreeksen met verschillende sorteringen |
2 | Impliciet | Kolomwaarde |
3 | Constante | De geretourneerde waarde van functies zoals USER() , VERSION() , enz. |
4 | Gedwongen | Letterlijke tekenreeks |
5 | Negatief | NULL of afgeleid van NULL |
Voorbeeld
Hier is een voorbeeld om te demonstreren:
SELECT COERCIBILITY('Green');
Resultaat:
+-----------------------+ | COERCIBILITY('Green') | +-----------------------+ | 4 | +-----------------------+
Dit is een normale string en dus is de dwang 4
.
Expliciete sortering
Hier is een voorbeeld van het expliciet specificeren van de sortering met de COLLATE
clausule.:
SELECT COERCIBILITY('Mango' COLLATE utf8_spanish_ci);
Resultaat:
+-----------------------------------------------+ | COERCIBILITY('Mango' COLLATE utf8_spanish_ci) | +-----------------------------------------------+ | 0 | +-----------------------------------------------+
Dit retourneert 0
omdat ik de sortering expliciet heb gespecificeerd met de COLLATE
clausule.
Databasekolom
In dit voorbeeld retourneer ik gegevens uit een databasekolom.:
SELECT
PetName,
COERCIBILITY(PetName)
FROM Pets
LIMIT 1;
Resultaat:
+---------+-----------------------+ | PetName | COERCIBILITY(PetName) | +---------+-----------------------+ | Fluffy | 2 | +---------+-----------------------+
Het feit dat het een databasekolom is, betekent dat het een impliciete sortering is, en daarom krijgen we een dwang van 2
.
Constanten
In dit voorbeeld krijg ik de dwang van de geretourneerde waarde van de ingebouwde VERSION()
functie:
SELECT COERCIBILITY(VERSION());
Resultaat:
+-------------------------+ | COERCIBILITY(VERSION()) | +-------------------------+ | 3 | +-------------------------+
Null-waarden
Dit gebeurt er als we null
doorgeven :
SELECT COERCIBILITY(null);
Resultaat:
+--------------------+ | COERCIBILITY(null) | +--------------------+ | 6 | +--------------------+
Null-waarden zijn te negeren, en dus krijgen we een dwang van 6
.
Geen argumenten
Aanroepen van COERCIBILITY()
zonder argumenten resulteert in een fout:
SELECT COERCIBILITY();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COERCIBILITY'