Zum Hauptinhalt springen

Formelausdrücke

Formelausdrücke können an verschiedenen Stellen in MapEdit verwendet werden.

Konzept

Der Ausdrucks Auswerter unterstützt Ausdrücke ähnlich die einer SQL Where Bedingung. Er kann Ausdrücke auflösen und unterstützt Variablen und einen spezifizierten Satz von Funktionen.

Warnung

Auch wenn Formelausdrücke wie SQL aussehen, sie sind keine SQL Befehle die auf der Datenbank ausgeführt werden. d.h. nur Funktionen und Operatoren die hier beschrieben sind können genutzt werden.

Unterstützte Operatoren und Funktionen

ReihenfolgeOperator/FunktionBeschreibungBeispiel
10()Sub term(COLUMN+1)=2
11CASECase expressionCASE WHEN a THEN b WHEN c THEN d ELSE e END
15INContained in listCOLUMN IN (1,2,3)
15NVLReplace NULL valuesNVL(COLUMN,2)=2
15NVL2Replace NULL valuesNVL2(COLUMN,1,2)=1
15COALESCEReplace NULL valuesCOALESCE(COLUMN,1,2,3,4)=2
15CONCATConcatenate stringsCONCAT('a','b')='ab'
15TRIMRemove whitespaceTRIM(' abc')='abc'
15LOWERConvert string to lower caseLOWER('ABC')='abc'
15UPPERConvert string to upper caseUPPER('abc')='ABC'
15ROUNDRound a numeric valueROUND(1.234,2)=1.23
20IS NULL/IS NOT NULLCheck if value is NULLCOLUMN IS NULL
21LIKE/NOT LIKELike operatorCOLUMN LIKE 'A%'
29NOTInvert conditionNOT COLUMN IN(1,2,3)
31*MultiplicationCOLUMN*1=2
32/DivisionCOLUMN/1=2
41+AdditionCOLUMN+1=2
42-SubtractionCOLUMN-1=2
49||Concatenate stringsCOLUMN||COLUMN2='ab'
61<Is smaller?COLUMN<1
62<=Is smaller or equal?COLUMN<=1
63>Is larger?COLUMN>1
64>=Is larger or equal?COLUMN>=1
71==/=Is equal?COLUMN=1
72!=/<>Is not equal?COLUMN!=1
111ANDLogical ANDCOLUMN=1 AND COLUMN2=2
121ORLogical ORCOLUMN=1 OR COLUMN2=2

Die Rangfolge ist so gestaltet, dass Prioritäten wie "Punktrechnung vor Strichrechnung" beim Auflösen beachtet werden - alternativ kann man die Terme auch einklammern. Damit können hier komplexere Bedingungen erstellt werden wie zum Beispiel: COLUMN='Value' OR COLUMN2 IN(A,B,C)

Erweiterte Funktionen

Ab Version 24.1.148

Die folgenden erweiterten Funktionen stehen nur an folgende Stellen zur Verfügung.

  • Function Button in Generischen Dialogen
  • Formula (Formel Feld) in Generischen Dialogen
  • Report Designer
Warnung

Diese Funktionen sind im Darstellungsmodell mit Absicht nicht verfügbar da diese in MapEdit Core (Java/MapEdit Mobile/Web) stand heute nicht zur Verfügung stehen und damit nicht funktionieren würden.

NameBeschreibung
DECODEWerte auflösen
INSTRText Position finden
SUBSTRTeil von Text ausschneiden
CONTAINSEnthält Text Prüfung
REPLACEText ersetzen
LENGTHText Länge ermitteln
STARTSWITHFängt Text mit Textteil an
ENDSWITHEndet Text mit Textteil
LPADText mit Zeichen auffüllen von Links
RPADText mit Zeichen auffüllen von Rechts
TODATEWandelt einen Text in ein Datum um (ab Version 24.2.39)

DECODE - Werte auflösen

Decode Anweisung (Ähnlich wie in Oracle)

Ist ähnlich zu einer IF ~ THEN ~ ELSE Anweisung.

Syntax:

DECODE(Wert, Wert 1, Ergebnis 1,Wert 2, Ergebnis 2,...Wert n, Ergebnis n, Ergebnis wenn kein Wert gefunden)
Result: Ergebnis

Der Wert "Ergebnis wenn kein Wert gefunden" ist optional. Wird dieser nicht angegeben dann wird NULL Zureuck geliefert wenn kein Wert gefunden wird.

Beispiel

DECODE (id_farbe, 1,'Rot',2,'Blau','andere')
Inhalt des Feldes "id_farbe" ist 2
Resultat: 'Blau'
Inhalt des Feldes "id_farbe" ist 17
Resultat: 'andere'

INSTR - Position finden

Liefert zurück an welcher Position eines Textes sich ein Text Teil befindet.

Syntax:

INSTR(Text, Text Teil)
Resultat: Ganzzahl

Beispiel:

INSTR('Ditzingen','ing')
Resultat: 5

SUBSTR - Text Teil zurückgeben

Liefert den Teil eines Textes ab einer gegebenen Start Position. Optional kann die Länge des Text Teiles angegeben werden.

Syntax:

SUBSTR(Text, Start)
Resultat: Text

oder

SUBSTR(Text, Start, Länge)
Resultat: Text

Beispiele:

SUBSTR('12345',2)
Resultat: '2345'
SUBSTR('Schlubbelipubs',4,3)
Resultat: 'lub'

CONTAINS - Ist Text enthalten

Liefert "true" zurück wenn der Textteil im Text vorhanden ist, ansonsten wird "false" rück geliefert.

Syntax:

CONTAINS(Text, Textteil)
Resultat: true/false (boolean)

Beispiel:

CONTAINS('Test','es')
Resultat: true

REPLACE - Textteile ersetzen

Syntax:

Replace(Text, Textteil der Ausgetauscht werden soll,Text mit dem der Textteil ausgetauscht werden soll)
Resultat: Text

Beispiele:

REPLACE('Tester','e','x')
Resultat: 'Txstxr'
REPLACE('Immer so einer','er','xx')
Resultat: 'Immxx so einxx'

LENGTH - Text Länge ermitteln

Liefert die Länge des angegebenen Textes zurück

Syntax:

LENGTH(Text)
Resultat: Ganzzahl

Beispiel

LENGTH('Hallo')
Resultat: 5

LPAD - Text auffüllen

Füllt einen Text von Links mit einem Zeichen bis zu der angegeben Länge.

Syntax:

LPAD(Text, Gesammt Länge, Einzelnes Zeichen)
Resultat: Text

Beispiel:

LPAD('Test',10, '*')
Resultat: ******Test
LPAD('Test',10, '-')
Resultat: ------Test
LPAD('17',10, '0')
Resultat: 0000000017

RPAD - Text auffüllen

Füllt einen Text von Rechts mit einem Zeichen bis zu der angegeben Länge.

Syntax:

RPAD(Text, Gesammt Länge, Einzelnes Zeichen)
Resultat: Text

Beispiel:

RPAD('Test',10, '*')
Resultat: Test******
RPAD('17',10, '0')
Resultat: 1700000000

STARTSWITH - Fängt Text mit anderem Text an

Liefert True wenn ein Text mit dem Text anfängt

Syntax:

STARTSWITH(Text, Text)
Resultat: true/false (boolean)

Beispiele:

STARTSWITH('Test','Te')
Resultat: true
STARTSWITH('Test','es')
Resultat: false

ENDSWITH - Endet Text mit anderem Text an

Liefert True wenn ein Text mit dem Text endet

Syntax:

ENDSWITH(Text, Text)
Resultat: true/false (boolean)

Beispiele:

ENDSWITH('Test','st')
Resultat: true
ENDSWITH('Test','es')
Resultat: false

TODATE - Wandelt einen Text in ein Datum um

ab Version 24.2.39

Syntax:

TODATE('Datumsausdruck als text')
Resultat: Datum (DateTime)

Beispiele:

TODATE('05.12.1970 11:15:22')