version 6.5 (Modifiée)
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 et pointeur (il n'est donc pas possible de les utiliser avec des expressions de type tableau, image ou BLOB).
Une expression qui utilise un opérateur de comparaison retourne une valeur booléenne, soit VRAI soit FAUX.
Comparaisons de chaînes
Opération | Syntaxe | Retourne | Expression | Valeur |
Egalité | Chaîne = Chaîne | Booléen | "abc" = "abc" | Vrai |
"abc" = "abd" | Faux | |||
Inégalité | Chaîne # Chaîne | Booléen | "abc" # "abd" | Vrai |
"abc" # "abc" | Faux | |||
Supérieur à | Chaîne > Chaîne | Booléen | "abd" > "abc" | Vrai |
"abc" > "abc" | Faux | |||
Inférieur à | Chaîne < Chaîne | Booléen | "abc" < "abd" | Vrai |
"abc" < "abc" | Faux | |||
Supérieur ou égal à | Chaîne >= Chaîne | Booléen | "abd" >= "abc" | Vrai |
"abc" >= "abd" | Faux | |||
Inférieur ou égal à | Chaîne <= Chaîne | Booléen | "abc" <= "abd" | Vrai |
"abd" <= "abc" | Faux |
Comparaisons de numériques
Opération | Syntaxe | Retourne | Expression | Valeur |
Egalité | Nombre = Nombre | Booléen | 10 = 10 | Vrai |
10 = 11 | Faux | |||
Inégalité | Nombre # Nombre | Booléen | 10 #11 | Vrai |
10 # 10 | Faux | |||
Supérieur à | Nombre > Nombre | Booléen | 11 > 10 | Vrai |
10 > 11 | Faux | |||
Inférieur à | Nombre < Nombre | Booléen | 10 < 11 | Vrai |
11 < 10 | Faux | |||
Supérieur ou égal à | Nombre >= Nombre | Booléen | 11 >= 10 | Vrai |
10 >= 11 | Faux | |||
Inférieur ou égal à | Nombre <= Nombre | Booléen | 10 <= 11 | Vrai |
11 <= 10 | Faux |
Comparaisons de dates
Opération | Syntaxe | Retourne | Expression | Valeur |
Egalité | Date = Date | Booléen | !1/1/97! =!1/1/97! | Vrai |
!20/1/97! =!1/1/97! | Faux | |||
Inégalité | Date # Date | Booléen | !20/1/97! # !1/1/97! | Vrai |
!1/1/97! # !1/1/97! | Faux | |||
Supérieur à | Date > Date | Booléen | !20/1/97! > !1/1/97! | Vrai |
!1/1/97! > !1/1/97! | Faux | |||
Inférieur à | Date < Date | Booléen | !1/1/97! < !20/1/97! | Vrai |
!1/1/97! < !1/1/97! | Faux | |||
Supérieur ou égal à | Date >= Date | Booléen | !20/1/97! >=!1/1/97! | Vrai |
!1/1/97!>=!20/1/97! | Faux | |||
Inférieur ou égal à | Date <= Date | Booléen | !1/1/97!<=!20/1/97! | Vrai |
!20/1/97!<=!1/1/97! | Faux |
Comparaisons d'heures
Opération | Syntaxe | Retourne | Expression | Valeur |
Egalité | Heure = Heure | Booléen | ?01:02:03? = ?01:02:03? | Vrai |
?01:02:03? = ?01:02:04? | Faux | |||
Inégalité | Heure # Heure | Booléen | ?01:02:03? # ?01:02:04? | Vrai |
?01:02:03? # ?01:02:03? | Faux | |||
Supérieur à | Heure > Heure | Booléen | ?01:02:04? > ?01:02:03? | Vrai |
?01:02:03? > ?01:02:03? | Faux | |||
Inférieur à | Heure < Heure | Booléen | ?01:02:03? < ?01:02:04? | Vrai |
?01:02:03? < ?01:02:03? | Faux | |||
Supérieur ou égal à | Heure >= Heure | Booléen | ?01:02:03? >=?01:02:03? | Vrai |
?01:02:03? >=?01:02:04? | Faux | |||
Inférieur ou égal à | Heure <= Heure | Booléen | ?01:02:03? <=?01:02:03? | Vrai |
?01:02:04? <=?01:02:03? | Faux |
Comparaisons de pointeurs
Avec :
` vPtrA et vPtrB pointent sur le même objet vPtrA:=->unObjet vPtrB:=->unObjet ` vPtrC pointe sur un autre objet vPtrC:=->autreObjet
Opération | Syntaxe | Retourne | Expression | Valeur |
Egalité | Pointeur = Pointeur | Booléen | vPtrA = vPtrB | Vrai |
vPtrA = vPtrC | Faux | |||
Inégalité | Pointeur # Pointeur | Booléen | vPtrA # vPtrC | Vrai |
vPtrA # vPtrB | Faux |
Remarques sur les comparaisons de chaînes
Voici quelques informations supplémentaires sur les comparaisons d'alphanumériques :
Les chaînes sont toujours comparées caractère par caractère.
Lors d'une comparaison de chaînes, 4e Dimension 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 ASCII. Par exemple, l'expression suivante retourne FAUX :
Code ascii ("A") = Code ascii ("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
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"
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 Code ascii(Arobase).
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 :
($vaValeur[[Longueur($vaValeur)]]="@")
- l'expression suivante sera correctement évaluée :
(Code ascii($vaValeur[[Longueur($vaValeur)]])#64)
Utiliser l'option "Considérer @ comme caractère pour les tris et les recherches", accessible via la boîte de dialogue des Préférences.
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 Structure de 4D.
Référence
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.