Constantes de chaîne en notation hexadécimale
Depuis Firebird 2.5, les constantes de type chaîne peuvent être écrites en notation hexadécimale, ce que l’on appelle des “chaînes binaires”.Chaque paire de chiffres hexadécimaux définit un octet dans la chaîne.Les chaînes de caractères entrées de cette façon auront l’encodage OCTETS
par défaut,Mais introducer syntax peut être utilisé pour forcer la chaîne à être interprétée dans un jeu de caractères différent.
{x|X}'<hexstring>' <hexstring> ::= an even number of <hexdigit> <hexdigit> ::= 0..9 | A..F | a..f
SELECT x'4E657276656E' FROM rdb$database
-- returns 4E657276656E, a 6-byte 'binary' string
SELECT _ascii x'4E657276656E' FROM rdb$database
-- returns 'Nerven' (same string, now interpreted as ASCII text)
SELECT _iso8859_1 x'53E46765' FROM rdb$database
-- returns 'Säge' (4 chars, 4 bytes)
SELECT _utf8 x'53C3A46765' FROM rdb$database
-- returns 'Säge' (4 chars, 5 bytes)
Note
|
La façon dont les chaînes binaires sont affichées dépend de l’interface client.Par exemple, l’utilitaire La notation hexadécimale permet d’insérer n’importe quel octet (y compris |
Un littéral peut contenir des espaces pour séparer les caractères hexadécimaux.Un littéral de chaîne peut être "terminé" par un espace ou un commentaire si nécessaire.Cela peut être utilisé pour rendre une chaîne hexadécimale plus lisible en regroupant les caractères,ou pour diviser un long littéral en plusieurs lignes, ou encore pour fournir des commentaires en ligne.
-- Groupe par octet (espace à l'intérieur du littéral)
select _win1252 x'42 49 4e 41 52 59'
from RDB$DATABASE;
-- sortie: BINARY
-- Espacement entre les caractères littéraux
select _win1252 x'42494e'
'415259'
from RDB$DATABASE;
-- sortie: BINARY