Fonction macro CONVERT (FireDAC)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Prétraitement du texte des commandes (FireDAC)



Le tableau suivant présente la fonction macro CONVERT :

Fonction


Description


Moteur d'expression local


CONVERT(value_exp, data_type) La fonction retourne la valeur spécifiée par value_exp convertie d'après le data_type spécifié, où data_type est l'un des mots clés suivants. +


Mots clés supportés :

BIGINT REAL
BINARY SMALLINT
BIT DATE
CHAR TIME
DECIMAL TIMESTAMP
TIMESTAMP TIMESTAMP
FLOAT VARBINARY
GUID VARCHAR
INTEGER WCHAR
LONGVARBINARY WLONGVARCHAR
LONGVARCHAR WVARCHAR
NUMERIC


La syntaxe de la fonction de conversion explicite d'un type de données ne supporte pas la spécification d'un format de conversion. L'argument value_exp peut être un nom de colonne, le résultat d'une autre fonction scalaire, ou un littéral numérique ou chaîne. Par exemple :

 { fn CONVERT( { fn CURDATE() }, CHAR ) }

convertit la sortie de la fonction scalaire CURDATE en chaîne de caractères. Etant donné que FireDAC ne mandate pas de type de données pour les valeurs retournées à partir des fonctions scalaires (parce que ces fonctions sont souvent spécifiques à la source de données), les applications doivent utiliser la fonction scalaire CONVERT chaque fois que possible pour forcer la conversion du type de données. Les deux exemples suivants illustrent l'utilisation de la fonction CONVERT. Ces exemples supposent l'existence d'une table nommée EMPLOYEES, comportant une colonne EMPNO de type SQL_SMALLINT et une colonne EMPNAME de type SQL_CHAR. Si une application spécifie l'instruction SQL suivante :

 SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,CHAR)} LIKE '1%'
  • Un pilote pour ORACLE traduit l'instruction SQL de cette manière :
 SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'
  • Un pilote pour SQL Server traduit l'instruction SQL de cette manière :
 SELECT EMPNO FROM EMPLOYEES WHERE convert(char,EMPNO) LIKE '1%'


Si une application spécifie l'instruction SQL suivante :

 SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SMALLINT)} FROM EMPLOYEES WHERE EMPNO <> 0

Un pilote pour ORACLE traduit l'instruction SQL de cette manière :

 SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0

Un pilote pour SQL Server traduit l'instruction SQL de cette manière

 SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0