MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona COERCIBILITY() in MariaDB

In MariaDB, COERCIBILITY() è una funzione di sistema che restituisce il valore di coercibilità di confronto del suo argomento stringa.

Definisce come verranno convertite le regole di confronto in caso di conflitto di regole di confronto. In tali conflitti, un'espressione con una coercibilità superiore viene convertita nella raccolta di un'espressione con una coercibilità inferiore.

Sintassi

La sintassi è questa:

COERCIBILITY(str)

Dove str è l'espressione per cui vorresti ottenere la coercibilità.

La COERCIBILITY() la funzione restituisce un valore compreso tra 0 e 5 , come indicato nella tabella seguente:

Coercibilità Descrizione Esempio
0 Esplicito Valore utilizzando un COLLATE clausola
1 Nessuna raccolta Stringhe concatenate che utilizzano regole di confronto diverse
2 Implicito Valore colonna
3 Costante Il valore restituito da funzioni come USER() , VERSION() , ecc
4 Coercibile Stringa letterale
5 Ignorabile NULL o derivato da NULL

Esempio

Ecco un esempio da dimostrare:

SELECT COERCIBILITY('Green');

Risultato:

+-----------------------+
| COERCIBILITY('Green') |
+-----------------------+
|                     4 |
+-----------------------+

Questa è una stringa normale e quindi la coercibilità è 4 .

Fascicolazione esplicita

Ecco un esempio di specificazione esplicita delle regole di confronto con COLLATE clausola.:

SELECT COERCIBILITY('Mango' COLLATE utf8_spanish_ci);

Risultato:

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

Questo restituisce 0 perché ho specificato esplicitamente le regole di confronto con COLLATE clausola.

Colonna del database

In questo esempio, restituisco i dati da una colonna del database.:

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

Risultato:

+---------+-----------------------+
| PetName | COERCIBILITY(PetName) |
+---------+-----------------------+
| Fluffy  |                     2 |
+---------+-----------------------+

Il fatto che sia una colonna del database significa che si tratta di un confronto implicito e quindi otteniamo una coercibilità di 2 .

Costanti

In questo esempio, ottengo la coercibilità del valore restituito dall'inbuilt VERSION() funzione:

SELECT COERCIBILITY(VERSION());

Risultato:

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

Valori Nulli

Ecco cosa succede quando superiamo null :

SELECT COERCIBILITY(null);

Risultato:

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

I valori nulli sono ignorabili e quindi otteniamo una coercibilità di 6 .

Nessun argomento

Chiamando COERCIBILITY() senza alcun argomento genera un errore:

SELECT COERCIBILITY();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'COERCIBILITY'