Dans MariaDB, COERCIBILITY()
est une fonction système qui renvoie la valeur coercitive de classement de son argument de chaîne.
Il définit comment les classements seront convertis en cas de conflit de classement. Dans de tels conflits, une expression avec une coercibilité plus élevée est convertie en collation d'une expression avec une coercibilité plus faible.
Syntaxe
La syntaxe ressemble à ceci :
COERCIBILITY(str)
Où str
est l'expression pour laquelle vous souhaitez obtenir la coercibilité.
La COERCIBILITY()
la fonction renvoie une valeur entre 0
et 5
, comme indiqué dans le tableau suivant :
Coercibilité | Description | Exemple |
---|---|---|
0 | Explicit | Valeur utilisant un COLLATE clause |
1 | Aucun classement | Chaînes concaténées utilisant différents classements |
2 | implicite | Valeur de la colonne |
3 | Constante | La valeur de retour des fonctions comme USER() , VERSION() , etc |
4 | Coercible | Chaîne littérale |
5 | Ignorable | NULL ou dérivé de NULL |
Exemple
Voici un exemple pour illustrer :
SELECT COERCIBILITY('Green');
Résultat :
+-----------------------+ | COERCIBILITY('Green') | +-----------------------+ | 4 | +-----------------------+
C'est une chaîne normale et donc la coercibilité est 4
.
Classement explicite
Voici un exemple de spécification explicite du classement avec le COLLATE
clause. :
SELECT COERCIBILITY('Mango' COLLATE utf8_spanish_ci);
Résultat :
+-----------------------------------------------+ | COERCIBILITY('Mango' COLLATE utf8_spanish_ci) | +-----------------------------------------------+ | 0 | +-----------------------------------------------+
Cela renvoie 0
car j'ai explicitement spécifié le classement avec le COLLATE
clause.
Colonne de base de données
Dans cet exemple, je renvoie les données d'une colonne de base de données :
SELECT
PetName,
COERCIBILITY(PetName)
FROM Pets
LIMIT 1;
Résultat :
+---------+-----------------------+ | PetName | COERCIBILITY(PetName) | +---------+-----------------------+ | Fluffy | 2 | +---------+-----------------------+
Le fait qu'il s'agisse d'une colonne de base de données signifie qu'il s'agit d'un classement implicite, et donc nous obtenons une coercibilité de 2
.
Constantes
Dans cet exemple, j'obtiens la coercibilité de la valeur de retour à partir du VERSION()
intégré fonction :
SELECT COERCIBILITY(VERSION());
Résultat :
+-------------------------+ | COERCIBILITY(VERSION()) | +-------------------------+ | 3 | +-------------------------+
Valeurs nulles
Voici ce qui se passe lorsque nous passons null
:
SELECT COERCIBILITY(null);
Résultat :
+--------------------+ | COERCIBILITY(null) | +--------------------+ | 6 | +--------------------+
Les valeurs nulles sont ignorables, et nous obtenons donc une coercibilité de 6
.
Aucun argument
Appel de COERCIBILITY()
sans aucun argument génère une erreur :
SELECT COERCIBILITY();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COERCIBILITY'