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                                       |
+----------------------------------------------+

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.