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.
Esempi
Gli esempi qui sotto usano la funzione HEX() per rappresentare in cifre esadecimali i risultati non stampabili.
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 | +----------------------------------------------+