Fonctions
de
conversion: Conversions de systèmes numériques |
|
F_ROMAN2ARABIC |
fonctions de adhoc
|
Entrypoint
|
roman2arabic |
Compatibles UTF-8 |
Entrée |
CSTRING(50) |
chiffre romain (en majuscules ou minuscules)
|
Sortie
|
INTEGER |
Les formes classiques ainsi que les formes
abrégées
sont valables |
Les formes
classiques ainsi que les formes
abrégées sont valables. Par exemple, pour 1999 :
classique MCMXCIX
abrégée 1
MXMIX
abrégée 2 MIM
Sont également valables, les formes romaines originelles, comme par
exemple pour 1984 :
originelle
MDCCCCLXXXIIII
classique MCMLXXXIV
Même des formes rejetées sont valables, comme par exemple pour 1900
:
Forme correcte
MCM mille + (mille – cent)
Forme incorrecte
MDCD mille
+ cinq cents + (cinq cents - cent)
Pour un chiffre romain invalide, comme par exemple MCA, la fonction
renvoie –1.
Remarque:
Si la règle qui impose de limiter la soustraction à un chiffre n’est
pas respectée, le résultat n’aura pas de signification. Ainsi : IX
est
permis, IIX n’est pas permis.
Un grand nombre de milliers, par exemple 10000, sera correctement
converti, s’il est écrit comme suit : MMMMMMMMMM
TestSQL
SELECT 1984 AS ISCORRECT, F_ROMAN2ARABIC('MCMLXXXIV') FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ROMAN2ARABIC(NULL) FROM RDB$DATABASE; |
|
F_ARABIC2ROMAN |
fonctions de adhoc
|
Entrypoint |
arabic2roman |
Compatibles UTF-8 |
Entrée
|
INTEGER |
Chiffres arabes |
Sortie
|
CSTRING(250) |
Transforme
les chiffres arabes donnés en chiffres romains |
Limite
maximum actuelle : 200000
TESTSQL
SELECT 'MCMLXXXIV' AS ISCORRECT, F_ARABIC2ROMAN(1984) FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_ARABIC2ROMAN(NULL) FROM RDB$DATABASE; |
|
F_CONVERTFROM33 |
Compatible avec FreeUDFLibC |
Entrypoint |
convertfrom33 |
Compatibles UTF-8 |
Entrée
|
CSTRING(254) |
Nombre
en base 33 en chaîne
qui est à convertir |
Sortie
|
INTEGER |
Convertit
un nombre en base
33 dans le système décimal |
TestSQL
SELECT 1000 AS ISCORRECT, F_CONVERTFROM33('WB') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CONVERTFROM33(NULL) FROM RDB$DATABASE; |
|
F_CONVERTTO33 |
Compatible avec FreeUDFLibC |
Entrypoint |
convertto33 |
Compatibles UTF-8 |
Entrée
|
INTEGER |
Nombre
en système décimal
qui est à convertir en base 33 |
Sortie
|
CSTRING(254) |
Convertit
un nombre décimal
en base 33 |
TestSQL
SELECT 'WB' AS ISCORRECT, F_CONVERTTO33(1000) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CONVERTTO33(NULL) FROM RDB$DATABASE; |
|
F_CONVERTFROMBASE |
Compatible avec FreeUDFLibC |
Entrypoint |
convertfrombase |
Compatibles UTF-8 |
Entrée
|
CSTRING(32) |
Nombre
d’un système
quelconque sous forme de chaîne, à convertir |
|
INTEGER |
Base
du nombre à convertir
(par exemple 2 pour le système binaire) |
|
CSTRING(8) |
Tous
les
chiffres valables dans le système spécifié au
paramètre 2 (par exemple, ‘01234567’ pour le
système octal) |
Sortie
|
INTEGER |
Convertir
un nombre exprimé
dans un système quelconque vers le système décimal |
TestSQL
SELECT 3 AS ISCORRECT, F_CONVERTFROMBASE('11', 2, '01') FROM
RDB$DATABASE;
SELECT 9 AS ISCORRECT, F_CONVERTFROMBASE('11', 8, '01234567') FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CONVERTFROMBASE(NUll, NULL, NULL) FROM
RDB$DATABASE; |
|
F_CONVERTTOBASE |
Compatible avec FreeUDFLibC |
Entrypoint |
converttobase |
Compatibles UTF-8 |
Entrée
|
INTEGER |
Nombre
décimal à convertir |
|
INTEGER |
Base
du système dans lequel
on convertit (par exemple 2 pour le système binaire) |
|
CSTRING(254) |
Tous
les
chiffres valables dans le système spécifié au
paramètre 2 (par exemple, ‘01234567’ pour le
système octal) |
Sortie
|
CSTRING(254) |
Convertit
un nombre décimal
dans un système quelconque |
TestSQL
SELECT '11' AS ISCORRECT, F_CONVERTTOBASE(3, 2, '01') FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CONVERTTOBASE(NULL, NULL, NULL) FROM
RDB$DATABASE; |
|
F_HEXTOINT |
Compatible avec GrUDF |
Entrypoint |
hextoint |
Compatibles UTF-8 |
Entrée
|
CSTRING(20) |
Valeur
en hexadécimal |
Sortie
|
INTEGER |
Valeur
entière |
TestSQL
SELECT 13 AS ISCORRECT, F_HEXTOINT('000000000d') FROM RDB$DATABASE;
SELECT 13 AS ISCORRECT, F_HEXTOINT('d') FROM RDB$DATABASE;
SELECT 13 AS ISCORRECT, F_HEXTOINT('D') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_HEXTOINT(NULL) FROM RDB$DATABASE; |
|
F_INTTOHEX |
Compatible avec GrUDF |
Entrypoint |
inttohex |
Compatibles UTF-8 |
Entrée
|
INTEGER |
Valeur
entière |
|
INTEGER |
Nombre
de chiffres décimaux |
Sortie
|
CSTRING(254) |
Valeur
en hexadécimal |
TestSQL
SELECT '000000000d' AS ISCORRECT, F_INTTOHEX(13, 10) FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_INTTOHEX(NULL, NULL) FROM RDB$DATABASE; |
|