4D v16.3

Vergleichsoperatoren

Home

 
4D v16.3
Vergleichsoperatoren

Vergleichsoperatoren  


 

 

Die Tabellen in diesem Abschnitt zeigen die Vergleichsoperatoren bei Ausdrücken vom Typ alphanumerisch, numerisch, Datum, Zeit, Zeiger und  Bilder mit Metadaten (nicht verwendbar bei Ausdrücken vom Typ Array oder BLOB). Ein Ausdruck mit Vergleichsoperator vergleicht zwei Werte miteinander und gibt einen Boolean Wert zurück, entweder TRUE oder FALSE.

Hinweis: Sie können zwei Bilder über die Funktion Equal pictures miteinander vergleichen.

OperationSyntaxErgibtAusdruckWert
GleichheitString = StringBoolean"abc" = "abc"True
"abc" = "abd"False
UngleichheitString # StringBoolean"abc" # "abd"True
"abc" # "abc"False
Größer alsString > StringBoolean "abd" > "abc"True
"abc" > "abc"False
Kleiner alsString < StringBoolean"abc" < "abd"True
"abc" < "abc"False
Größer als oder gleichString >= StringBoolean "abd" >= "abc"True
"abc" >= "abd"False
Kleiner als oder gleichString <= StringBoolean "abc" <= "abd"True
"abd" <= "abc"False
Enthält SchlüsselwortString % StringBoolean "Alpha Bravo" % "Bravo"True
"Alpha Bravo" % "ravo"False
Picture % StringBooleanPicture_expr % "Mer"True (*)

(*) Wenn das Schlüsselwort "Mer" dem Bild zugewiesen ist, das in einem Ausdruck Bild (Feld oder Variable) gespeichert ist.

Weitere Informationen dazu finden Sie am Ende dieses Abschnitts unter Vergleiche vom Typ alphanumerisch .

OperationSyntaxErgibtAusdruckWert
GleichheitZahl = ZahlBoolean10 = 10True
10 = 11False
UngleichheitZahl # ZahlBoolean10 #11True
10 # 10False
Größer alsZahl > ZahlBoolean11 > 10True
10 > 11False
Kleiner alsZahl < ZahlBoolean10 < 11True
11 < 10False
Größer als oder gleichZahl >= ZahlBoolean11 >= 10True
10 >= 11False
Kleiner als oder gleichZahl <= ZahlBoolean10 <= 11True
11 <= 10False

Weitere Informationen zur Genauigkeit beim Vergleichen von Zahlen im Bezug auf Gleichheit finden Sie unter dem Befehl SET REAL COMPARISON LEVEL.

Datum  

OperationSyntaxErgibtAusdruckWert
GleichheitDatum = DatumBoolean!1.1.97! =!1.1.97!True*
!20.1.97! =!1.1.97!False
UngleichheitDatum # DatumBoolean!20.1.97! # !1.1.97!True
!1.1.97! # !1.1.97!False
Größer alsDatum > DatumBoolean!20.1.97! > !1.1.97!True
!1.1.97! > !1.1.97!False
Kleiner alsDatum < DatumBoolean!1.1.97! < !20.1.97!True
!1.1.97! < !1.1.97!False
Größer als oder gleichDatum >= DatumBoolean!20.1.97! >=!1.1.97!True
!1.1.97!>=!20.1.97!False
Kleiner als oder gleichDatum <= DatumBoolean!1.1.97!<=!20.1.97!True
!20.1.97!<=!1.1.97!False

Zeit  

OperationSyntaxErgibtAusdruckWert
GleichheitZeit = ZeitBoolean?01:02:03? = ?01:02:03?True
?01:02:03? = ?01:02:04?False
UngleichheitZeit # ZeitBoolean?01:02:03? # ?01:02:04?True
?01:02:03? # ?01:02:03?False
Größer alsZeit > ZeitBoolean?01:02:04? > ?01:02:03?True
?01:02:03? > ?01:02:03?False
Kleiner alsZeit < ZeitBoolean?01:02:03? < ?01:02:04?True
?01:02:03? < ?01:02:03?False
Größer als oder gleichZeit >= ZeitBoolean?01:02:03? >=?01:02:03?True
?01:02:03? >=?01:02:04?False
Kleiner als oder gleichZeit <= ZeitBoolean?01:02:03? <=?01:02:03?True
?01:02:04? <=?01:02:03?False

Zeiger  

Bei Zeigern sind nur die Operatoren gleich und ungleich möglich: Wenn gilt

  ` vPtrA und vPtrB zeigen auf das gleiche Objekt
 vPtrA:=->EinObjekt
 vPtrB:=->EinObjekt
  ` vPtrC zeigt auf ein anderes Objekt
 vPtrC:=->ein anderes Objekt

ergibt sich folgendes:

OperationSyntaxErgibtAusdruckWert
GleichheitZeiger = ZeigerBooleanvPtrA = vPtrBTrue
vPtrA = vPtrCFalse
UngleichheitZeiger # ZeigerBooleanvPtrA # vPtrCTrue
vPtrA # vPtrBFalse

Beachten Sie folgende Regeln:

  • Strings werden Zeichen für Zeichen miteinander verglichen (außer bei Suchen nach Schlüsselwort).
  • Die Groß- und Kleinschreibung wird nicht berücksichtigt. So gibt "a"="A" TRUE zurück. Wollen Sie die Schreibweise von zwei Zeichen überprüfen, vergleichen Sie deren Zeichen Codes. So ergibt z.B. folgender Ausdruck FALSE:
     Character code("A")=Character code("a") // da 65 ungleich 97 ist
  • Diakritische Zeichen werden nicht berücksichtigt. 4D verwendet beim Vergleich die Zeichen des Systems auf Ihrem Rechner. So ergibt z.B. folgender Ausdruck TRUE:
     "n"="ñ"
     "n"="Ñ"
     "A"="å"
      // usw
  • Bei der Suche nach Schlüsselwörtern werden Wörter nur im ganzen berücksichtigt. Der Operator % gibt immer Falsch zurück, wenn die Suche mehr als ein Wort oder nur einen Teil davon betrifft, z.B. eine Vorsilbe. Wörter werden definiert als Zeichenketten, getrennt durch „Trenner“, also Leerzeichen, Bindestrich, Gedankenstrich, o.ä. Ein Apostroph, z.B. Today's gilt normalerweise als Teil des Wortes, wird aber in bestimmten Fällen ignoriert (siehe Regeln unten). Sie können auch nach Nummern suchen, da sie inkl. Trennzeichen für Tausend oder Dezimalstellen ( . , ) als Ganzes gewertet werden. Andere Zeichen (Währungssymbole, Temperatur, usw.) werden dabei ignoriert.
     "Alpha Bravo Charlie"%"Bravo" // Gibt Wahr zurück
     "Alpha Bravo Charlie"%"vo" // Gibt Falsch zurück
     "Alpha Bravo Charlie"%"Alpha Bravo" // Gibt Falsch zurück
     "Alpha,Bravo,Charlie"%"Alpha" // Gibt Wahr zurück
     "Software and Computers"%"comput@" // Gibt Wahr zurück

    Hinweise:

    - 4D verwendet zum Suchen der Schlüsselwörter die ICU library. Weitere Informationen zu den Regeln bei Schlüsselwörtern finden Sie unter http://www.unicode.org/unicode/reports/tr29/#Word_Boundaries
    - In der japanischen Version verwendet 4D zum Suchen von Schlüsselwörtern anstatt ICU standardmäßig Mecab. Weitere Informationen dazu finden Sie im Abschnitt Unterstützung von Mecab (japanische Version).
  • Das Jokerzeichen (@) wird berücksichtigt. @ kann für beliebig viele Zeichen stehen. So ergibt z.B. folgender Ausdruck TRUE:
     "abc@"="abcdefghij"

    Sie können das Jokerzeichen nur für den zweiten Operanden (der String auf der rechten Seite) einsetzen. Demnach ergibt folgender Ausdruck FALSE, da @ im ersten Operanden lediglich als 1 Zeichen gewertet wird: "abc@" = "abcdefghij"
    Das Jokerzeichen kann ein Zeichen, viele Zeichen oder gar kein Zeichen ersetzen. Demnach ergeben folgende Ausdrücke TRUE:
     "abcdefghij"="abcdefghij@"
     "abcdefghij"="@abcdefghij"
     "abcdefghij"="abcd@efghij"
     "abcdefghij"="@abcdefghij@"
     "abcdefghij"="@abcde@fghij@"

    Zwei aufeinanderfolgende Jokerzeichen werden dagegen nicht erkannt. Hier gibt der Ausdruck FALSE zurück:
     "abcdefghij"="abc@@fg"

    Enthält der Vergleichsoperator ein < oder > Zeichen, wird nur der Vergleich mit einem Joker am Ende des Operanden unterstützt:
     "abcd"<="abc@" // Valid comparison
     "abcd"<="abc@ef"/Not a valid comparison/

Hinweise:
Wollen Sie Vergleiche oder Suchläufe mit @ als Zeichen, also nicht als Joker durchführen, gibt es zwei Möglichkeiten:

  • Sie verwenden die Anweisung Character code (At sign).
    Angenommen, Sie wollen wissen, ob ein String mit dem Zeichen @ endet.
    • der folgende Ausdruck ist immer WAHR, außer $vsValue ist leer:
       ($vsValue[[Length($vsValue)]]="@")
    • der folgende Ausdruck wird korrekt interpretiert:
       (Character code($vsValue[[Length($vsValue)]])#64)
  • Sie aktivieren im Dialogfenster Datenbank-Eigenschaften die Option "@ nur am Anfang oder Ende eines Textes als Joker betrachten". Dann gilt @ als normales Zeichen, wenn es innerhalb einer Zeichenkette gefunden wird. Mit dieser Option können Sie beeinflussen, wie Vergleichsoperatoren in Such- und Sortierläufen verwendet werden. Weitere Informationen dazu finden Sie im Abschnitt Text-Vergleiche des Handbuchs 4D Designmodus.



Siehe auch 

Bildoperatoren
Bit Operatoren
Boolean Operatoren
Datumsoperatoren
Numerische Operatoren
Operatoren
Zeitoperatoren

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Operatoren

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)