Partage via


Fonctions de conversion de types de données explicites

La conversion de type de données explicite est spécifiée en termes de définitions de type de données SQL.

La syntaxe ODBC de la fonction de conversion de type de données explicite ne limite pas les conversions. La validité des conversions spécifiques d’un type de données vers un autre type de données est déterminée par chaque implémentation spécifique au pilote. Le pilote, quand il traduit la syntaxe ODBC en syntaxe native, rejette les conversions qui, bien que légales dans la syntaxe ODBC, ne sont pas prises en charge par la source de données. La fonction ODBC SQLGetInfo, avec les options de conversion (telles que SQL_CONVERT_BIGINT, SQL_CONVERT_BINARY, SQL_CONVERT_INTERVAL_YEAR_MONTH, etc.), permet de se renseigner sur les conversions prises en charge par la source de données.

Le format de la fonction CONVERT est le suivant :

CONVERT(value_exp, data_type)

La fonction retourne la valeur spécifiée par value_exp convertie en data_type spécifiée, où data_type est l’un des mots clés suivants :

SQL_BIGINT
SQL_BINARY
SQL_BIT
SQL_CHAR
SQL_DATE
SQL_DECIMAL
SQL_DOUBLE
SQL_FLOAT
SQL_GUID
SQL_INTEGER
SQL_INTERVAL_DAY
SQL_INTERVAL_DAY_TO_HOUR

SQL_INTERVAL_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND
SQL_INTERVAL_HOUR
SQL_INTERVAL_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE
SQL_INTERVAL_MINUTE_TO_SECOND
SQL_INTERVAL_MONTH
SQL_INTERVAL_SECOND
SQL_INTERVAL_YEAR
SQL_INTERVAL_YEAR_TO_MONTH
SQL_LONGVARBINARY

SQL_LONGVARCHAR
SQL_NUMERIC
SQL_REAL
SQL_SMALLINT
SQL_TIME
SQL_TIMESTAMP
SQL_TINYINT
SQL_VARBINARY
SQL_VARCHAR
SQL_WCHAR
SQL_WLONGVARCHAR
SQL_WVARCHAR

La syntaxe ODBC de la fonction de conversion de type de données explicite ne prend pas en charge la spécification du format de conversion. Si la spécification de formats explicites est prise en charge par la source de données sous-jacente, un pilote doit spécifier une valeur par défaut ou implémenter une spécification de format.

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 de chaîne. Par exemple :

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

convertit la sortie de la fonction scalaire CURDATE en chaîne de caractères.

Étant donné qu’ODBC n’impose pas de type de données pour les valeurs de retour des fonctions scalaires (car les 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 de type de données.

Les deux exemples suivants illustrent l’utilisation de la fonction CONVERT . Ces exemples supposent l’existence d’une table appelée EMPLOYEES, avec 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,SQL_CHAR)} LIKE '1%'  
  • Un pilote pour ORACLE traduit l’instruction SQL en :

    SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'  
    
  • Un pilote pour SQL Server traduit l’instruction SQL en :

    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,SQL_SMALLINT)}  
   FROM EMPLOYEES WHERE EMPNO <> 0  
  • Un pilote pour ORACLE traduit l’instruction SQL en :

    SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0  
    
  • Un pilote pour SQL Server traduit l’instruction SQL en :

    SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES  
       WHERE EMPNO <> 0  
    
  • Un pilote pour Ingres traduit l’instruction SQL en :

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