4D v16.3

Opérateurs de comparaison

Accueil

 
4D v16.3
Opérateurs de comparaison

Opérateurs de comparaison  


 

 

Les tableaux suivants décrivent les opérateurs de comparaison. Ces opérateurs peuvent être appliqués aux expressions de type chaîne, numérique, date, heure, pointeur et image avec métadonnées (il n'est donc pas possible de les utiliser avec des expressions de type tableau ou BLOB).
Une expression qui utilise un opérateur de comparaison retourne une valeur booléenne, soit VRAI soit FAUX.

Note : Il est possible de comparer deux images à l'aide de la commande Equal pictures.

OpérationSyntaxeRetourneExpressionValeur
EgalitéChaîne = ChaîneBooléen"abc" = "abc"Vrai
"abc" = "abd"Faux
InégalitéChaîne # ChaîneBooléen"abc" # "abd"Vrai
"abc" # "abc"Faux
Supérieur àChaîne > ChaîneBooléen "abd" > "abc"Vrai
"abc" > "abc"Faux
Inférieur àChaîne < ChaîneBooléen"abc" < "abd"Vrai
"abc" < "abc"Faux
Supérieur ou égal àChaîne >= ChaîneBooléen "abd" >= "abc"Vrai
"abc" >= "abd"Faux
Inférieur ou égal àChaîne <= ChaîneBooléen "abc" <= "abd"Vrai
"abd" <= "abc"Faux
Contient mot-cléChaîne % ChaîneBooléen "Alpha Bravo" % "Bravo"Vrai
"Alpha Bravo" % "ravo"Faux
Image % ChaîneBooléenExpr_image % "Mer"Vrai (*)

(*) Si le mot-clé "Mer" a été associé à l'image stockée dans l'expression image (champ ou variable).
Important : Des informations supplémentaires sur les comparaisons de chaînes sont fournies à la fin de cette section.

OpérationSyntaxeRetourneExpressionValeur
EgalitéNombre = NombreBooléen10 = 10Vrai
10 = 11Faux
InégalitéNombre # NombreBooléen10 #11Vrai
10 # 10Faux
Supérieur àNombre > NombreBooléen11 > 10Vrai
10 > 11Faux
Inférieur àNombre < NombreBooléen10 < 11Vrai
11 < 10Faux
Supérieur ou égal àNombre >= NombreBooléen11 >= 10Vrai
10 >= 11Faux
Inférieur ou égal àNombre <= NombreBooléen10 <= 11Vrai
11 <= 10Faux

Note : Pour plus d'informations sur la précision des comparaisons d'égalité des nombres réels, reportez-vous à la commande SET REAL COMPARISON LEVEL.

OpérationSyntaxeRetourneExpressionValeur
EgalitéDate = DateBooléen!1/1/97! =!1/1/97!Vrai
!20/1/97! =!1/1/97!Faux
InégalitéDate # DateBooléen!20/1/97! # !1/1/97!Vrai
!1/1/97! # !1/1/97!Faux
Supérieur àDate > DateBooléen!20/1/97! > !1/1/97!Vrai
!1/1/97! > !1/1/97!Faux
Inférieur àDate < DateBooléen!1/1/97! < !20/1/97!Vrai
!1/1/97! < !1/1/97!Faux
Supérieur ou égal àDate >= DateBooléen!20/1/97! >=!1/1/97!Vrai
!1/1/97!>=!20/1/97!Faux
Inférieur ou égal àDate <= DateBooléen!1/1/97!<=!20/1/97!Vrai
!20/1/97!<=!1/1/97!Faux

OpérationSyntaxeRetourneExpressionValeur
EgalitéHeure = HeureBooléen?01:02:03? = ?01:02:03?Vrai
?01:02:03? = ?01:02:04?Faux
InégalitéHeure # HeureBooléen?01:02:03? # ?01:02:04?Vrai
?01:02:03? # ?01:02:03?Faux
Supérieur àHeure > HeureBooléen?01:02:04? > ?01:02:03?Vrai
?01:02:03? > ?01:02:03?Faux
Inférieur àHeure < HeureBooléen?01:02:03? < ?01:02:04?Vrai
?01:02:03? < ?01:02:03?Faux
Supérieur ou égal àHeure >= HeureBooléen?01:02:03? >=?01:02:03?Vrai
?01:02:03? >=?01:02:04?Faux
Inférieur ou égal àHeure <= HeureBooléen?01:02:03? <=?01:02:03?Vrai
?01:02:04? <=?01:02:03?Faux

Avec :

  ` vPtrA et vPtrB pointent sur le même objet
 vPtrA:=->unObjet
 vPtrB:=->unObjet
  ` vPtrC pointe sur un autre objet
 vPtrC:=->autreObjet
OpérationSyntaxeRetourneExpressionValeur
EgalitéPointeur = PointeurBooléenvPtrA = vPtrBVrai
vPtrA = vPtrCFaux
InégalitéPointeur # PointeurBooléenvPtrA # vPtrCVrai
vPtrA # vPtrBFaux

Voici quelques informations supplémentaires sur les comparaisons d'alphanumériques :

  • Les chaînes sont toujours comparées caractère par caractère (hormis en cas de recherche par mot-clé, cf. ci-dessous).
  • Lors d'une comparaison de chaînes, 4D ne tient pas compte de la casse des caractères ; par exemple, "a"="A" retourne VRAI. Pour savoir si des caractères sont en majuscules ou en minuscules, vous devez comparer leurs codes de caractères. Par exemple, l'expression suivante retourne FAUX :
     Character code("A")=Character code("a") // 65 n'est pas égal à 97
  • Lors d'une comparaison de chaînes, les caractères diacritiques sont comparés à l'aide de la table de comparaison des caractères de votre machine. Par exemple, les expressions suivantes retournent VRAI :
     "n"="ñ"
     "n"="Ñ"
     "A"="å"
      // etc
  • A la différence des autres comparaisons de chaîne, les recherches par mots-clés recherchent des “mots” dans des “textes” : les mots sont évalués individuellement et dans leur globalité. L’opérateur % retournera toujours Faux si la recherche porte sur plusieurs mots ou une partie de mot (par exemple une syllabe). Les “mots” sont des chaînes de caractères encadrées par des “séparateurs”, qui sont les espaces, les caractères de ponctuation et les tirets. Une apostrophe, comme dans “aujourd'hui”, est généralement considérée comme partie du mot, mais sera ignorée dans certains cas (cf. règles ci-dessous). Les nombres peuvent être recherchés car ils sont évalués dans leur ensemble (incluant les symboles décimaux). Les autres symboles (monnaie, température, etc.) seront ignorés.
     "Alpha Bravo Charlie"%"Bravo" ` Retourne Vrai
     "Alpha Bravo Charlie"%"vo" ` Retourne Faux
     "Alpha Bravo Charlie"%"Alpha Bravo" ` Retourne Faux
     "Alpha,Bravo,Charlie"%"Alpha" ` Retourne Vrai
     "Software and Computers"%"comput@" ` Retourne Vrai

    Notes :

    - 4D utilise la librairie ICU pour la détection des mots-clés. Pour plus d'informations sur les règles mises en oeuvre, reportez-vous à l'adresse http://www.unicode.org/unicode/reports/tr29/#Word_Boundaries.
    - En version japonaise, 4D utilise par défaut la librairie Mecab en lieu et place de ICU pour la détection des mots-clés. Pour plus d'informations, reportez-vous au paragraphe Prise en charge de Mecab (version japonaise).
  • Le joker (@) peut être utilisé dans toute comparaison de chaînes. Il remplace un ou plusieurs caractères. Ainsi, par exemple, l'expression suivante est évaluée à VRAI :
     "abcdefghij"="abc@"

Le joker doit être utilisé dans le second opérande (la chaîne qui se trouve à droite de l'opérateur). L'expression suivante est évaluée à FAUX car le joker est alors considéré en tant que caractère :

 "abc@"="abcdefghij"

Le joker signifie “un ou plusieurs caractères sinon rien”. Les expressions suivantes sont évaluées à VRAI :

 "abcdefghij"="abcdefghij@"
 "abcdefghij"="@abcdefghij"
 "abcdefghij"="abcd@efghij"
 "abcdefghij"="@abcdefghij@"
 "abcdefghij"="@abcde@fghij@"

En revanche, dans tous les cas, lorsque deux jokers consécutifs sont placés dans une comparaison de chaînes, celle-ci sera évaluée à FAUX. L'expression suivante est à FAUX :

 "abcdefghij"="abc@@fg"

Lorsque l'opérateur de comparaison est ou contient un symbole < ou >, seule la comparaison avec un seul joker situé en fin d'opérande est prise en charge :

 "abcd"<="abc@" `Comparaison valide
 "abcd"<="abc@ef" `Comparaison non valide

Note : Si vous souhaitez effectuer des comparaisons ou des recherches utilisant @ en tant que caractère (et non en tant que joker), vous disposez de deux possibilités :

  • Utiliser l'instruction Character code(At sign).
    Imaginons par exemple que vous souhaitiez savoir si une chaîne se termine par le caractère @.
    - l’expression suivante (si $vaValeur n'est pas vide) retourne toujours VRAI :
     ($vaValeurLength($vaValeur)≥="@")

    - l'expression suivante sera correctement évaluée :
     (Character code($vaValeurLength($vaValeur)≥)#64)
  • Utiliser l'option “Considérer @ comme joker uniquement au début et à la fin des chaînes de caractères”, accessible via la boîte de dialogue des Propriétés de la base.
    Cette option permet de paramétrer le mode d’interprétation du caractère @ lorsque celui-ci est inclus dans une chaîne de caractères. Elle peut donc influer sur le fonctionnement des opérateurs de comparaison utilisés dans le cadre de recherches ou de tris. Pour plus d'informations, reportez-vous au manuel Mode Développement de 4D.



Voir aussi  

Opérateurs
Opérateurs logiques
Opérateurs numériques
Opérateurs sur les bits
Opérateurs sur les dates
Opérateurs sur les heures
Opérateurs sur les images

 
PROPRIÉTÉS 

Produit : 4D
Thème : Opérateurs

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)