MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie COERCIBILITY() in MariaDB funktioniert

In MariaDB COERCIBILITY() ist eine Systemfunktion, die den Koerzbarkeitswert der Sortierung ihres String-Arguments zurückgibt.

Es definiert, wie Kollatierungen im Falle eines Kollatierungskonflikts konvertiert werden. In solchen Konflikten wird ein Ausdruck mit einer höheren Zwangskraft in die Kollatierung eines Ausdrucks mit einer niedrigeren Zwangskraft umgewandelt.

Syntax

Die Syntax sieht so aus:

COERCIBILITY(str) 

Wobei str ist der Ausdruck, für den Sie die Erzwingen abrufen möchten.

Die COERCIBILITY() Funktion gibt einen Wert zwischen 0 zurück und 5 , wie in der folgenden Tabelle beschrieben:

Erzwingbarkeit Beschreibung Beispiel
0 Explizit Wert mit einem COLLATE Klausel
1 Keine Sortierung Verkettete Zeichenfolgen mit unterschiedlichen Sortierungen
2 Implizit Spaltenwert
3 Konstant Der Rückgabewert von Funktionen wie USER() , VERSION() , usw
4 Erzwingbar Literal-String
5 Ignorierbar NULL oder abgeleitet von NULL

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

SELECT COERCIBILITY('Green'); 

Ergebnis:

+-----------------------+| COERCIBILITY('Grün') |+----------------------+| 4 |+-----------------------+

Dies ist eine normale Zeichenkette und daher ist die Koerzbarkeit 4 .

Explizite Sortierung

Hier ist ein Beispiel für die explizite Angabe der Sortierung mit COLLATE Klausel.:

SELECT COERCIBILITY('Mango' COLLATE utf8_spanish_ci); 

Ergebnis:

+---------------------------------------------- -+| COERCIBILITY('Mango' COLLATE utf8_spanish_ci) |+---------------------------------------- -------+| 0 |+---------------------------------------------- +

Dies gibt 0 zurück weil ich die Sortierung explizit mit dem COLLATE angegeben habe Klausel.

Datenbankspalte

In diesem Beispiel gebe ich Daten aus einer Datenbankspalte zurück.:

SELECT 
    PetName,
    COERCIBILITY(PetName)
FROM Pets
LIMIT 1; 

Ergebnis:

+---------+----------------------+| Haustiername | COERCIBILITY(PetName) |+---------+-----------------------+| Flauschig | 2 |+---------+----------------------+

Die Tatsache, dass es sich um eine Datenbankspalte handelt, bedeutet, dass es sich um eine implizite Sortierung handelt, und daher erhalten wir eine Zwangsbedingung von 2 .

Konstanten

In diesem Beispiel erhalte ich die Zwingbarkeit des Rückgabewerts von der eingebauten VERSION() Funktion:

SELECT COERCIBILITY(VERSION()); 

Ergebnis:

+-------------------------+| COERCIBILITY(VERSION()) |+--------------------+| 3 |+-------------------------+

Nullwerte

Folgendes passiert, wenn wir null übergeben :

SELECT COERCIBILITY(null); 

Ergebnis:

+--------------------+| COERCIBILITY(null) |+--------------------+| 6 |+--------------------+

Nullwerte sind ignorierbar, daher erhalten wir eine Koerzitivität von 6 .

Keine Argumente

Aufruf von COERCIBILITY() ohne Argumente führt zu einem Fehler:

SELECT COERCIBILITY(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'COERCIBILITY'