La plupart des fonctions d'expression ont le même comportement dans tous les fournisseurs de données, à quelques exceptions près.
Vous pouvez faire appel à n'importe quelle fonction lorsque vous créez un filtre ou une propriété calculée. Ces résultats ne sont pas enregistrés à nouveau dans la banque de données. Toutefois, si vous utilisez une fonction qui renvoie un type de données non pris en charge pour insérer une valeur dans la table de données, une exception se produit. Cette opération n'est pas possible pour le fournisseur de données. Par exemple, les fichiers SHP ne prennent pas en charge les types de données FdoInt16 ou FdoDouble. Si vous tentez d'enregistrer une valeur de ce type de données dans une banque de données SHP, une erreur se produit.
La fonction Soundex bénéficie d'une prise en charge native par tous les systèmes de gestion de bases de données relationnelles (SGBDR). Le système de gestion de bases de données relationnelles (SGBDR) sous-jacent évalue toutes les expressions qui incluent cette fonction. Cependant, le résultat renvoyé par un fournisseur MySQL peut différer du résultat que vous recevez d'autres fournisseurs.
Les fournisseurs SDF et SHP représentent une valeur booléenne par les termes TRUE et FALSE. Les fournisseurs SGBDR représentent une valeur booléenne par 0 et 1. Cette différence peut affecter l'affichage des étiquettes. Par exemple, l'expression suivante définit une étiquette qui indique si une valve est ouverte :
Concat('La valve est ouverte : ', <propriété_statut_valve>)
S'il s'agit de données SDF et SHP, l'étiquette indique "La valve est ouverte : True". S'il s'agit de données de SGBDR, l'étiquette indique "La valve est ouverte : 1".
Les fonctions AddMonths et MonthsBetween ne prennent pas en compte les informations liées au jour, contrairement aux systèmes SGBDR.
Par exemple, dans le cas de l'expression AddMonths(<propriété_date>, 88.7), un fournisseur de SGBDR peut ajouter 88,7 mois à la date proposée. La fonction dans les expressions que vous créez dans le produit n'ajoute que 88 mois.
De même, pour l'expression MonthsBetween(<date_1>, <date_2>), un fournisseur SGBDR peut renvoyer la valeur 77,4 alors que la fonction dans les expressions que vous créez renvoie 77.
Certaines opérations (par exemple, la création d'une propriété calculée) sont basées sur le cache ; elles font appel au générateur d'expression pour l'évaluation. D'autres opérations (par exemple, un filtre sur une banque de données SGBDR) s'appuient sur un système de SGBDR sous-jacent.
En raison des différences inhérentes aux fournisseurs, les résultats peuvent être différents. Par exemple, si vous vous connectez à une banque de données MySQL, vous pouvez créer deux propriétés calculées : CP1 et CP2. La propriété CP1 est définie par l'expression Soundex(<propriété>) et l'expression CP2 est définie par l'expression Soundex(<littérale>). La valeur de CP1 et de CP2 peut être identique dans la table de données. Cependant, si vous utilisez un filtre contenant l'expression Soundex(<propriété>) = Soundex(<littéral>), les valeurs obtenues peuvent être différentes. Dans la table de données, le processus de création de l'expression évalue les expressions. La banque de données MySQL (qui fait appel à une définition de fonction différente) évalue le filtre.