sql >> Database >  >> RDS >> MariaDB

Hoe COERCIBILITY() werkt in MariaDB

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'

  1. Wat is Oracle Database?

  2. Is er een Max-functie in SQL Server die twee waarden aanneemt, zoals Math.Max ​​in .NET?

  3. 3 manieren om het kolomgegevenstype in Oracle te controleren

  4. FIX:MySQL - SELECT-opdracht geweigerd aan gebruiker