Conversion des types de données dans les expressions
Il existe deux types de conversion de données :
- Les conversions implicites, dans lesquelles l'évaluateur d'expression convertit automatiquement les données d'un type de données vers un autre. Par exemple, si un smallint est comparé à un int, le smallint est implicitement converti en int avant que la comparaison soit réalisée.
- Les conversions explicites, dans lesquelles vous utilisez un casting pour convertir une valeur, telle qu'une variable locale, une colonne ou une autre expression, d'un type de données vers un autre. Pour plus d'informations, consultez Cast (SSIS).
Le diagramme suivant indique le type de résultat des conversions implicites des opérations BINARY. L'intersection d'une colonne et d'une ligne produit le même type de résultat d'une opération binaire avec des opérandes des types gauche (From) et droit (To).
L'intersection d'un entier signé et d'un entier non signé est un entier signé potentiellement plus grand que l'un ou l'autre des arguments.
Les opérations qui combinent un entier non signé (8 bits) et un entier signé nécessitent une conversion explicite afin de clarifier le format du résultat.
Une fonction qui utilise un seul argument renvoie un résultat dont le type de données est celui de l'argument, sauf dans les cas suivants :
- Les fonctions DAY, MONTH et YEAR acceptent une date et renvoient un résultat entier (DT_I4).
- La fonction ISNULL accepte une expression de n'importe quel type de données SSIS et renvoie un résultat booléen (DT_BOOL).
- Les fonctions SQUARE et SQRT acceptent une expression numérique et renvoient un résultat numérique non intégral (DT_BOOL).
Si les arguments possèdent le même type de données, le résultat est de ce type. La seule exception est une opération binaire sur deux valeurs de type de données DT_DECIMAL, car celle-ci renvoie un résultat dont le type de données est DT_NUMERIC.
En outre, les fonctions comparent des chaînes, des dates et des valeurs booléennes. Avant qu'une fonction ne compare deux valeurs, l'évaluateur d'expression effectue les conversions implicites suivantes :
- Les chaînes de type de données DT_STR sont converties vers le type de données DT_WSTR.
- Les valeurs de date et d'heure sont converties vers le type de données DT_DBTIMESTAMP.
L'évaluateur d'expression ne peut pas convertir implicitement une valeur en une valeur booléenne. Dans ce cas de figure, l'expression doit comprendre une opération de conversion explicite. Pour plus d'informations, consultez Cast (SSIS).
Remarque : |
---|
Les valeurs booléennes ne sont pas des nombres mais des valeurs logiques. Bien que les valeurs booléennes peuvent apparaître sous la forme de nombres dans certains environnements, elles ne sont pas stockées en tant que tels et divers langages de programmation les représentent de manière différente en tant que valeurs numériques, notamment les méthodes .NET Framework. Par exemple, les fonctions de conversion disponibles dans Visual Basic convertissent la valeur True en -1 ; en revanche, la méthode System.Convert.ToInt32 du .NET Framework convertit True en +1. Le langage d'expression Integration Services convertit True en -1. Pour éviter des erreurs ou des résultats inattendus, n'écrivez pas de code fondé sur des valeurs numériques précises pour les valeurs True et False. Si possible, limitez l'usage de variables booléennes aux valeurs logiques pour lesquelles elles sont conçues. |
Une expression peut utiliser des arguments et des opérandes de types de données incompatibles, auquel cas l'évaluateur d'expression ne peut pas effectuer la conversion implicite des données. Par exemple, l'évaluateur d'expression ne permet pas de comparer un opérande de type de données string (chaîne) à un opérande de type de données numeric (numérique). Pour que cette comparaison puisse être effectuée, l'opérande numérique doit être explicitement converti en un type de données string. Le langage d'expression comprend un opérateur de conversion qui prend en charge la conversion entre les types de données string, numeric, date et binary. Pour plus d'informations, consultez Cast (SSIS).
Historique des modifications
Version | Historique |
---|---|
17 juillet 2006 |
|
Voir aussi
Autres ressources
Concepts des expressions Integration Services