WEIGHT_STRING
MariaDB starting with 10.0.5
La funzione WEIGHT_STRING è stata introdotta in MariaDB 10.0.5.
Sintassi
WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [LEVEL livelli] [flag])
levelli: N [ASC|DESC|REVERSE] [, N [ASC|DESC|REVERSE]] ...
Spiegazione
Restituisce una stringa binaria che rappresenta il valore di comparazione e ordinamento della stringa data. Una stringa che restituisce un risultato più basso, nell'ordinamento, appare prima di una stringa che restituisce un valore più alto.
WEIGHT_STRING() è particolarmente utile quando si aggiungono collation, ai fini del testing.
Se str è una stringa non binaria di tipo (CHAR, VARCHAR o TEXT), WEIGHT_STRING restituisce il peso di ordinamento della stringa. Se str è una stringa binaria (BINARY, VARBINARY o BLOB), il valore restituito è semplicemente il valore in input, perché il peso di ogni byte della stringa binaria è il suo valore di ordinamento.
WEIGHT_STRING() restituisce NULL se riceve un input NULL.
La clausola opzionale AS permette di convertire la stringa in input in una stringa binaria o non binaria di una certa lunghezza.
AS BINARY(N) misura la lunghezza in byte invece che in caratteri e la riempe a destra con byte 0x00 fino alla lunghezza desiderata.
AS CHAR(N) misura la lunghezza in caratteri e la riempe a destra con spazi fino alla lunghezza desiderata.
N ha un valore minimo di 1 e, se è minore della lunghezza della stringa, questa è troncata senza warning.
La clausola opzionale LEVEL specifica che il valore restituito deve contenere i pesi dei livelli di collation specificati. L'opzione livelli può essere un singolo intero, una lista di interi separati da virgole o un intervallo di interi separati da un trattino (gli spazi bianchi sono ignorati). Gli interi ammessi vanno da 1 a 6, a seconda della collation, e devono essere elencati in ordine ascendente.
Se la clausola LEVEL non è presente, il default è un intervallo da 1 al massimo della collation.
Se LEVEL è specificata senza usare un intervallo, è permesso usare un modificatore opzionale.
ASC, il default, restituisce i pesi senza modifiche.
DESC restituisce i pesi con i byte invertiti.
REVERSE restituisce i pesi in ordine inverso.
Examples
The examples below use the HEX() function to represent non-printable results in hexadecimal format.
SELECT HEX(WEIGHT_STRING('x'));
+-------------------------+
| HEX(WEIGHT_STRING('x')) |
+-------------------------+
| 0058 |
+-------------------------+
SELECT HEX(WEIGHT_STRING('x' AS BINARY(4)));
+--------------------------------------+
| HEX(WEIGHT_STRING('x' AS BINARY(4))) |
+--------------------------------------+
| 78000000 |
+--------------------------------------+
SELECT HEX(WEIGHT_STRING('x' AS CHAR(4)));
+------------------------------------+
| HEX(WEIGHT_STRING('x' AS CHAR(4))) |
+------------------------------------+
| 0058002000200020 |
+------------------------------------+
SELECT HEX(WEIGHT_STRING(0xaa22ee LEVEL 1));
+--------------------------------------+
| HEX(WEIGHT_STRING(0xaa22ee LEVEL 1)) |
+--------------------------------------+
| AA22EE |
+--------------------------------------+
SELECT HEX(WEIGHT_STRING(0xaa22ee LEVEL 1 DESC));
+-------------------------------------------+
| HEX(WEIGHT_STRING(0xaa22ee LEVEL 1 DESC)) |
+-------------------------------------------+
| 55DD11 |
+-------------------------------------------+
SELECT HEX(WEIGHT_STRING(0xaa22ee LEVEL 1 REVERSE));
+----------------------------------------------+
| HEX(WEIGHT_STRING(0xaa22ee LEVEL 1 REVERSE)) |
+----------------------------------------------+
| EE22AA |
+----------------------------------------------+