Datentypen, Attribute und Methoden

vSQL unterstützt eine Teilmenge der Datentypen, die von UL4 unterstützt werden. Diese und die damit in Verbindung stehenden Methoden werden im folgenden erklärt.

None (NONE)

None ist die Null-Konstante in vSQL (und UL4).

Boolsche Werte (BOOL)

True oder False

Ganze Zahlen (INT)

Beispielsweise 123

Zahlen mit Nachkommastellen (NUMBER)

Beispielsweise 123.45

Strings (STR)

String-Konstanten werden in vSQL (wie in UL4) folgendermaßen geschrieben: "foo" oder 'foo'.

Methoden

Strings besitzen in vSQL folgende Methoden:

str.lower()

Konvertiert den String-Wert str in Kleinbuchstaben.

Beispiele:

Ausdruck

Wert

"GURK".lower()

"gurk"

str.upper()

Konvertiert den String-Wert str in Großbuchstaben.

Beispiele:

Ausdruck

Wert

"Gurk".upper()

"GURK"

str.startswith(präfix)

Testet, ob der String-Wert str mit dem übergebenen Präfix präfix beginnt. präfix kann auch eine Liste von Strings sein, dann gibt x.startswith(y) True zurück, wenn x mit einem der Strings in y beginnt.

Beispiele:

Ausdruck

Wert

"Gurk".startswith("Gu")

True

"Gurk".startswith("gu")

False

"Gurk".startswith("")

True

"Gurk".startswith(["Gu", "Hu", "Ku"])

True

"Gurk".startswith(["Hu", "Ku"])

False

str.endswith(suffix)

Testet, ob der String-Wert str mit dem übergebenen Suffix suffix endet. suffix kann auch eine Liste von Strings sein, dann gibt x.endswith(y) True zurück, wenn x mit einem der Strings in y endet.

Beispiele:

Ausdruck

Wert

"Gurk".endswith("rk")

True

"Gurk".endswith("rz")

False

"Gurk".endswith("")

True

"Gurk".endswith(["rk", "rz", "nz"])

True

"Gurk".endswith(["rz", "nz"])

False

str.strip() oder str.strip(None)

Entfernt Leerzeichen und anderen Whitespace von beiden Enden des String-Wertes str.

Beispiele:

Ausdruck

Wert

"gurk".strip()

"gurk"

" gurk ".strip()

"gurk"

" \t\r\n gurk \t\r\n ".strip()

"gurk"

" \t\r\n gurk \t\r\n hurz \t\r\n ".strip()

"gurk \t\r\n hurz"

" gurk ".strip(None)

"gurk"

str.strip(zeichen)

Entfernt alle Zeichen die in dem String-Wert zeichen vorkommen von beiden Enden des String-Wertes str.

Beispiele:

Ausdruck

Wert

"abrakadabra".strip("a")

"brakadabr"

"abrakadabra".strip("rab")

"kad"

str.lstrip(), str.lstrip(None) oder str.lstrip(zeichen)

Ähnlich wie strip(), jedoch werden nur Zeichen am Anfang des Strings entfernt.

Beispiele:

Ausdruck

Wert

"gurk".lstrip()

"gurk"

" gurk ".lstrip()

"gurk "

" \t\r\n gurk \t\r\n ".lstrip()

"gurk \t\r\n "

" \t\r\n gurk \t\r\n hurz \t\r\n ".lstrip()

"gurk \t\r\n hurz \t\r\n "

" gurk ".lstrip(None)

"gurk "

"abrakadabra".lstrip("a")

"brakadabra"

"abrakadabra".lstrip("rab")

"kadabra"

str.rstrip(), str.rstrip(None) oder str.rstrip(zeichen)

Ähnlich wie strip(), jedoch werden nur Zeichen am Ende des Strings entfernt.

Beispiele:

Ausdruck

Wert

"gurk".rstrip()

"gurk"

" gurk ".rstrip()

" gurk"

" \t\r\n gurk \t\r\n ".rstrip()

" \t\r\n gurk"

" \t\r\n gurk \t\r\n hurz \t\r\n ".rstrip()

" \t\r\n gurk \t\r\n hurz"

" gurk ".rstrip(None)

" gurk"

"abrakadabra".rstrip("a")

"abrakadabr"

"abrakadabra".rstrip("rab")

"abrakad"

str.find(suchstring)

Gibt den Offset zurück an dem suchstring das erste Mal in str auftaucht. Wird suchstring nicht gefunden, wird -1 zurückgegeben.

Beispiele:

Ausdruck

Wert

"abrakadabra".find("a")

0

"abrakadabra".find("ra")

2

"abrakadabra".find("rab")

-1

str.find(suchstring, start, stop)

Ähnlich wie der Aufruf mit einem Argument, jedoch wird die Suche auf den Unterstring str[start:stop] beschränkt.

Beispiele:

Ausdruck

Wert

"abrakadabra".find("a", 0)

0

"abrakadabra".find("a", 1)

3

"abrakadabra".find("a", 11)

-1

"abrakadabra".find("a", -1)

10

"abrakadabra".find("a", -4)

7

"abrakadabra".find("ra", 3)

9

"abrakadabra".find("ra", 3, 11)

9

"abrakadabra".find("ra", 3, 10)

-1

"abrakadabra".find("ra", 3, -7)

9

"abrakadabra".find("ra", 3, -8)

-1

str.rfind(suchstring) oder str.rfind(suchstring, start, stop)

Ähnlich wie find(), die Suche beginnt jedoch am Ende des Strings.

Beispiele:

Ausdruck

Wert

"abrakadabra".rfind("a", 0)

10

"abrakadabra".rfind("a", 11)

10

"abrakadabra".rfind("a", 10)

7

"abrakadabra".rfind("a", 4, -2)

7

str.split(sep)

Trennt den String str an den Stellen, an denen sep vorkommt und liefert die resultierende Liste von Strings zurück.

Beispiele:

Ausdruck

Wert

"A+B+C".split("+")

["A", "B", "C"]

"++A++B++C++".split("+")

["", "", "A", "", "B", "", "C", "", ""]

str.split(sep, maxsplit)

Ähnlich str.split(sep) jedoch wird str höchstens maxsplit mal getrennt.

Beispiele:

Ausdruck

Wert

"A+B+C".split("+", 2)

["A", "B", "C"]

"A+B+C".split("+", 1)

["A", "B+C"]

str.join(liste)

Verbindet alle Strings in liste mit dem Trennstring str zu einen einzigen String.

Beispiele:

Ausdruck

Wert

"+".join(["A", "B", "C"])

"A+B+C"

Datum (DATE) und Datum/Uhrzeit (DATETIME)

@(2000-02-29)

Datums-Konstante

@(2000-02-29T12:34:56)

Datums/Zeit-Konstante

Außerdem können DATE-Werte mit der Funktion date und DATETIME-Werte mit der Funktion datetime erzeugt werden.

Attribute

DATE- und DATETIME-Werte besitzen folgender Attribute:

date.year

Das Jahr des Datumswertes date.

Beispiele:

Ausdruck

Wert

@(2000-02-29).year

2000

date.month

Das Monat des Datumswertes date.

Beispiele:

Ausdruck

Wert

Bemerkung

@(2000-02-29).month

2

Februar

date.day

Der Tag des Datumswertes date

Beispiele:

Ausdruck

Wert

@(2000-02-29).day

29

date.weekday

Der Wochentag des Datumswertes date. 0 ist Montag, 1 ist Dienstag, …, 6 ist Sonntag.

Beispiele:

Ausdruck

Wert

Bemerkung

@(2000-02-29).weekday

1

Dienstag

date.yearday

Die Anzahl der Tage seit Beginn das Jahres.

Beispiele:

Ausdruck

Wert

@(2000-01-01).yearday

1

@(2000-02-29).yearday

60

@(2000-12-31).yearday

366

@(2001-12-31).yearday

365

Zusätzlich besitzen DATETIME-Werte noch die Attribute:

datetime.hour

Die Stundenangabe des Datumswertes datetime.

Beispiele:

Ausdruck

Wert

@(2000-02-29T12:34:56).hour

12

datetime.minute

Die Minutenangabe des Datumswertes datetime.

Beispiele:

Ausdruck

Wert

@(2000-02-29T12:34:56).minute

34

datetime.second

Die Sekundenangabe des Datumswertes datetime.

Beispiele:

Ausdruck

Wert

@(2000-02-29T12:34:56).second

56

Zeiträume (DATEDELTA und DATETIMEDELTA)

DATEDELTA-Werte stellen die Differenz zwischen zwei DATE-Werten dar. DATEDELTA-Werte können mit den Funktionen timedelta und days erzeugt werden.

DATETIMEDELTA-Werte stellen die Differenz zwischen zwei DATETIME-Werten dar und können mit den Funktionen timedelta, hours, minutes und seconds erzeugt werden.

Monatszeiträume (MONTHDELTA)

MONTHDELTA-Werte können mit den Funktionen monthdelta, years und months erzeugt werden.

Farben (COLOR)

Farb-Werte (mit oder ohne Alpha-Wert) werden in vSQL (und UL4) ähnlich geschrieben wie in CSS: #rgba, #rrggbb, #rgba oder #rrggbbaa (wobei r, g, b und a jeweils Hexadezimal-Ziffern sind).

Beispiele:

Wert

Bemerkung

#000

Schwarz

#fff

Weiß

#f00

Rot

#0f0

Grün

#00f

Blau

#7f7f7f

Mittelgrau

#00ff007f

Halbtransparentes Grün

Mehr zum RGB-Farbmodel in der Wikipedia: https://de.wikipedia.org/wiki/RGB-Farbraum.

Attribute

Farben haben folgende Attribute:

color.r

Rot-Anteil der Farbe color (Zahl zwischen 0 und 255);

color.g

Grün-Anteil der Farbe color (Zahl zwischen 0 und 255);

color.b

Blau-Anteil der Farbe color (Zahl zwischen 0 und 255);

color.a

Transparenz der Farbe color (0 = komplett transparent, 255 = komplett undurchsichtig).

Methoden

Farben haben folgende Methode:

color.lum()

Gibt die Helligkeit der Farbe color zurück. Das Ergebnis liegt zwischen 0 (dunkel) und 1 (hell).

Beispiele:

Ausdruck

Wert

#000.lum()

0.0

#808080.lum()

0.5019607843137255

#fff.lum()

1.0

Funktionen

Desweiteren gibt es folgende Funktion um eine Farben zu erzeugen:

rgb(r, g, b, a)

Dabei ist r der Rot-Anteil, g der Grün-Anteil, b der Blau-Anteil und a die Transparenz.

Diese Werte müssen jeweils zwischen 0 und 1 liegen. Der Defaultwert für a ist 1.

Beispiele:

Ausdruck

Wert

Bemerkung

rgb(0, 0, 0)

#000

Schwarz

rgb(1, 1, 1)

#fff

Weiß

rgb(1, 0, 0)

#f00

Rot

rgb(0.5, 0.5, 0.5)

#7f7f7f

Mittelgrau

rgb(0, 1, 0, 0.5)

#00ff007f

Halbtransparentes Grün

Für Farben gibt es zusätzlich den Farbmisch-Operator %. Dabei ist a % b die Farbe, die sich ergibt wenn die Farbe a auf einem Hintergrund der Farbe b aufgetragen würde.

Beispiele:

Ausdruck

Wert

Bemerkung

#fff % #000

#fff

intransparerentes Weiß auf Schwarz also Weiß

#fff8 % #000

#888

halbtransparentes Weiß auf Schwarz also Grau

#f00a % #0f0

#a50

halbtransparentes Rot auf Grün also Gelb

Geo-Koordinaten (GEO)

Geo-Koordinaten können in vSQL mit der Funktion geo() erzeugt werden. Es gibt eine Version mit zwei Argumenten (Breiten- und Längengrad) sowie drei Argumenten (Breitengrad, Längengrad und Beschreibung).

Beispiele:

Ausdruck

Beschreibung

geo(49.955267, 11.591212)

Breiten- und Längengrad

geo(49.955267, 11.591212, "LivingLogic AG, Bayreuth")

Breitengrad, Längengrad und Info

Attribute

Geo-Koordinaten haben folgende Attribute:

geo.lat

Der Breitengrad.

Beispiel:

Ausdruck

Wert

geo(49.955267, 11.591212, "LivingLogic AG, Bayreuth").lat

49.955267

geo.long

Der Längengrad.

Beispiel:

Ausdruck

Wert

geo(49.955267, 11.591212, "LivingLogic AG, Bayreuth").long

11.591212

geo.info

Die Beschreibung des Ortes.

Beispiel:

Ausdruck

Wert

geo(49.955267, 11.591212, "LivingLogic AG, Bayreuth").info

"LivingLogic AG, Bayreuth"

Funktionen

Desweiteren gibt es eine Funktion zur Verarbeitung von Geo-Koordinaten.

dist(geo1, geo2)

Berechnet die Entfernung der Geo-Koordinaten geo1 und geo2 in Kilomettern.

Beispiel:

Ausdruck

Wert

dist(geo(49.955267, 11.591212, "LivingLogic AG, Bayreuth"), geo(51.5319695, 9.9416986, "Albanikirchhof, 37085 Göttingen, Deutschland"))

210,5

Listen

vSQL unterstützt Listen, wenn die Einträge einen der folgende Typen haben: INT, NUMBER, STR, DATE oder DATETIME. Außerdem müssen alle Einträge denselben Typ haben. Solange nicht alle Werte None sind, sind auch None-Einträge in der Liste erlaubt.

Beispiele

Ausdruck

Bemerkung

[1, 2, 3, None, 5]

INT-Liste

[1.0, 2.0, 3.0, 17.23]

NUMBER-Liste

["gurk", "hurz", None, "hinz", "kunz"]

STR-Liste

[@(2000-02-29), @(2019-02-28), today()]

DATE-Liste

[@(2000-02-29T12:34), @(2019-02-28T12:34), now()]

DATETIME-Liste