Conversion implicite
Une conversion implicite des résultats de l'expression s'effectue au moment de l'exécution pour certaines combinaisons de types de données.
Par exemple, une conversion implicite s'exécute si une expression de type nombre entier a été spécifiée comme valeur initiale pour une zone de données de type flottant. Notez que, dans une expression, il n'y a pas de conversion implicite d'une valeur de chaîne en valeur temporelle ; vous devez utiliser la fonction convert ou la fonction stringtotime pour convertir explicitement une valeur de chaîne en valeur temporelle.
Dans une expression complexe, une conversion implicite a lieu pour que le type de données de l'argument remplisse les exigences d'une fonction ou d'un opérateur. Par exemple, la fonction substr utilise des valeurs entières pour les arguments de la longueur et de la position de départ. Si vous indiquez les valeurs flottantes 2,5 et 1,0 pour ces arguments, elles sont implicitement converties et respectivement remplacées par les valeurs entières 2 et 1, avant le calcul de l'expression.
Une conversion implicite s'effectue au moment de l'exécution pour les combinaisons de types de données suivantes :
Flottant vers entier
Tous les chiffres placés après le séparateur décimal dans le nombre en virgule flottante sont tronqués. Par exemple, si vous indiquez 123,4567 comme valeur initiale d'une zone de données de type entier, la valeur de la zone de données devient 123 au moment de l'initialisation.
Entier vers flottant
Un zéro et un séparateur décimal sont ajoutés après le dernier chiffre du nombre entier.
Dans une expression complexe contenant à la fois des valeurs entières et des valeurs flottantes, une conversion implicite s'exécute si un opérateur demande que les valeurs aient le même type de données. Dans ce cas, la valeur entière est convertie en valeur flottante avant le calcul de l'expression. Par exemple, si vous spécifiez 1,5 + 2, la valeur 2 est remplacée par 2,0.