MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment COERCIBILITY () fonctionne dans MariaDB

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)

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'