Conversion implicite des types de données dans les expressions

Une conversion implicite d'un type de données se produit lorsque 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.

L'évaluateur d'expression ne peut pas effectuer la conversion implicite des données lorsque les arguments et les opérandes contiennent des types de données incompatibles. Par ailleurs, l'évaluateur d'expression ne peut pas convertir implicitement une valeur en une valeur booléenne. Les arguments et les opérandes doivent être donc être converties explicitement en utilisant l'opérateur de cast. 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).

Conversion de type de données implicite entre types de données

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érateurs comparent des chaînes, des dates, des valeurs booléennes et d'autres types de données. Avant qu'un opérateur ne compare deux valeurs, l'évaluateur d'expression effectue certaines conversions implicites. Pour plus d'informations, consultez les rubriques suivantes :

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.