FirebirdSQL logo

Exemple BIT_LENGTH

Example 1. Utilisation de la fonction BIT_LENGTH
SELECT BIT_LENGTH ('Hello!') FROM RDB$DATABASE
-- renvoie 48

SELECT BIT_LENGTH (_ISO8859_1 'Grüß Di!')
FROM RDB$DATABASE
-- retourne 64 : chacun, ü et ß occupent un octet en ISO8859_1

SELECT BIT_LENGTH (
CAST (_ISO8859_1 'Grüß di!' AS VARCHAR (24)
CHARACTER SET UTF8))
FROM RDB$DATABASE
-- renvoie 80 : ü et ß occupent chacun deux octets en UTF8.

SELECT BIT_LENGTH (
CAST (_ISO8859_1 'Grüß di!' AS CHAR (24)
CHARACTER SET UTF8))
FROM RDB$DATABASE
-- renvoie 208 : la taille de l'ensemble des 24 positions CHAR et deux d'entre elles sont de 16 bits

CHAR_LENGTH(), CHARACTER_LENGTH()

Disponible en

DSQL, PSQL

Syntaxe
  CHAR_LENGTH (string)
| CHARACTER_LENGTH (string)
Table 1. paramètres de fonction CHAR_LENGTH
Paramètre Description

string

Une expression de type chaîne de caractères.

Le type de résultat renvoyé :

BIGINT

La fonction CHAR_LENGTH renvoie la longueur (en caractères) de la chaîne passée en argument.

Note

Avec des paramètres de type CHAR, cette fonction prend en compte la longueur totale de la chaîne formelle (par exemple, la longueur déclarée d’un champ ou d’une variable). Si vous voulez obtenir une longueur `logique' sans espaces, vous devez effectuer une opération RIGHT TRIM sur l’argument avant de le passer à `CHAR[ACTER]_LENGTH'.

HASH()

Disponible en

DSQL, PSQL

Syntaxe
HASH (str [USING <algorithm>])

<algorithm> ::= { CRC32 }
Table 1. paramètres de fonction HASH
Paramètre Description

str

Une expression de type chaîne de caractères.

Le type de résultat renvoyé :

BIGINT

La fonction HASH renvoie un hachage non cryptographique de la chaîne d’entrée.Cette fonction prend entièrement en charge les `BLOB' de texte de n’importe quelle longueur et avec n’importe quel jeu de caractères.

La clause facultative USING spécifie l’algorithme de hachage non cryptographique à appliquer.Lorsque la clause USING n’est pas présente, l’algorithme PJW est appliqué, comme dans les versions précédentes de Firebird.

Algorithmes pris en charge :
non spécifié

Si aucun algorithme n’est spécifié, une version 64 bits de l’algorithme non cryptographique est utilisée.https://en.wikipedia.org/wiki/PJW_hash_function [fonction de hachage PJW^] (également connue sous le nom de ELF64) est utilisée.Cette fonction est très rapide et peut être utilisée à des fins générales (tables de hachage, etc.) mais présente un grand nombre de collisions.Pour un hachage plus sûr, vous devriez utiliser d’autres fonctions de hachage, explicitement spécifiées dans la clause USING, ou des hachages cryptographiques avec [fblangref-scalarfuncs-crypthash].

Pour cet algorithme de hachage, la fonction renvoie le type BIGINT.

CRC32

Si la clause USING spécifie l’algorithme CRC32, Firebird applique l’algorithme CRC32 en utilisant le polynôme 0x04C11DB7.

Pour cet algorithme, la fonction HASH renvoie un résultat de type INTEGER.

Exemple HASH

Example 1. Calcul du hachage avec algorithme PJW
SELECT HASH(x) FROM MyTable;
-- résultat du type BIGINT
Example 2. Calcul du hachage avec algorithme CRC32
SELECT HASH(x USING CRC32) FROM MyTable;
-- résultat du type INTEGER