SQL-Syntax

Anmerkungen zu Schlüsselwörtern

Ein SQL-Block kann eine Reihe von Klauseln enthalten, die durch Semikolons (;) getrennt sind.


Mithilfe der einzelnen Blöcke können die folgenden Aufgaben mit den folgenden Schlüsselwörtern durchgeführt werden:

  1. Auswahl aufheben: CLEAR SELECTION
  2. Skalare Variable festlegen: LET
  3. Listenvariable festlegen: LIST
  4. Objekte auswählen: SELECT
  5. Auswahl von Objekten aufheben (Objekte aus der Auswahl entfernen): DESELECT
  6. Objekte löschen: DELETE
  7. Werte von Feldern oder Variablen ändern: SET und UPDATE
  8. Wertetabelle erstellen, die in einem Raster angezeigt oder in eine CSV-Datei ausgegeben werden kann: SELECT

Mit Ausnahme der ersten drei Aufgaben gilt Folgendes:


Nachfolgend finden Sie weitere Informationen zu den Schlüsselwörtern:
  1. Auswahl löschen

    So heben Sie die Auswahl auf

    CLEAR SELECTION


  2. Skalare Variable festlegen

    Verwenden Sie das Schlüsselwort LET, um eine skalare Variable festzulegen. Beispiel:

    LET <variable name> = <value>


  3. Listenvariable festlegen

    Verwenden Sie das Schlüsselwort LIST, um eine Listenvariable festzulegen. Beispiel:

    LIST <variable name> = <value 1>, <value 2>, <value 3>, <value n>


  4. Objekte auswählen

    Verwenden Sie das Schlüsselwort SELECT, um Objekte auszuwählen. Beispiel:

    SELECT
    SELECT ALL
    SELECT SELECTED
    SELECT
     FROM pipe
    SELECT ALL 
     FROM pipe
    SELECT SELECTED 
     FROM pipe
    SELECT 
     WHERE x > 0
    SELECT ALL 
     WHERE x > 0
    SELECT SELECTED 
     WHERE x > 0
    SELECT 
     FROM pipe 
     WHERE diameter > 250
    SELECT ALL 
     FROM pipe 
     WHERE diameter > 250
    SELECT SELECTED 
     FROM pipe 
     WHERE diameter > 250

    Wenn Sie mit dem aktuellen Auswahlmodus eine Auswahl aus der aktuellen Tabelle treffen, kann das Schlüsselwort SELECT weggelassen werden. Beispiel:

    x > 0


  5. Auswahl von Objekten aufheben

    Verwenden Sie das Schlüsselwort DESELECT, um die Auswahl von Objekten aufzuheben.

    DESELECT
    DESELECT ALL
    DESELECT SELECTED
    DESELECT 
     FROM pipe
    DESELECT ALL 
     FROM pipe
    DESELECT SELECTED 
     FROM pipe
    DESELECT 
     WHERE x > 0
    DESELECT ALL 
     WHERE x > 0
    DESELECT SELECTED 
     WHERE x > 0
    DESELECT 
     FROM pipe 
     WHERE diameter > 250
    DESELECT ALL 
     FROM pipe 
     WHERE diameter > 250
    DESELECT SELECTED 
     FROM pipe 
     WHERE diameter > 250


  6. Objekte löschen

    Verwenden Sie das Schlüsselwort DELETE, um Objekte zu löschen.

    DELETE
    DELETE ALL
    DELETE SELECTED
    DELETE 
     FROM pipe
    DELETE ALL 
     FROM pipe
    DELETE SELECTED 
     FROM pipe
    DELETE 
     WHERE x > 0
    DELETE ALL 
     WHERE x > 0
    DELETE SELECTED 
     WHERE x > 0
    DELETE 
     FROM pipe 
     WHERE diameter > 250
    DELETE ALL 
     FROM pipe 
     WHERE diameter > 250
    DELETE SELECTED 
     FROM pipe 
     WHERE diameter > 250


  7. Werte von Feldern oder Variablen ändern

    Verwenden Sie das Schlüsselwort SET, um die Werte von Feldern oder Variablen zu ändern. Sie können mehrere Werte gleichzeitig festlegen, indem Sie die Zuweisungen durch Kommas (, ) trennen.

    SET 
      x = x – 100, 
      y = y – 100
    SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20


    Verwenden Sie zum Überschreiben der aktuellen Tabelle und des aktuellen Auswahlmodus das Schlüsselwort UPDATE.

    UPDATE ALL SET 
      x = x – 100, 
      y = y - 100
    UPDATE SELECTED SET 
      x = x – 100, 
      y = y - 100
    UPDATE node SET 
      x = x – 100, 
      y = y - 100
    UPDATE ALL node SET 
      x = x – 100, 
      y = y - 100
    UPDATE SELECTED node SET 
      x = x – 100, 
      y = y – 100
    UPDATE ALL SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20
    UPDATE SELECTED SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20
    UPDATE node SET 
      x = x – 100, 
      y = y - 100 
     WHERE ground_level > 20
    UPDATE ALL node SET 
      x = x – 100, 
      y = y – 100
     WHERE ground_level > 20
    UPDATE SELECTED node SET 
      x = x – 100, 
      y = y – 100 
     WHERE ground_level > 20


  8. Wertetabelle erstellen

    Verwenden Sie zum Auswählen mehrerer Werte das Schlüsselwort SELECT, und fügen Sie anschließend die durch Kommas getrennten Werte für die Ausgabe ein. Beispiel:

    SELECT 
      node_id, 
      MAX(us_links.conduit_width), 
      MIN(us_links.conduit_width)


    Der Titel der Spalte im Raster oder in der CSV-Datei kann mit dem Schlüsselwort AS überschrieben werden. Beispiel:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin


    Der Titel kann entweder ohne Anführungszeichen (in diesem Fall darf er weder Leerzeichen noch nicht-alphanumerische Zeichen enthalten) oder mit Anführungszeichen angegeben werden. Beispiel:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS '£% my min'


    Es ist möglich, die Tabelle mit dem Schlüsselwort FROM zu überschreiben. Beispiel:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin 
     FROM node


    Die Ergebnisse werden in einem Raster angezeigt, es sei denn, mit dem Schlüsselwort INTO FILE wird eine Datei angegeben. Beispiel:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin 
     FROM node 
     INTO FILE 'c:\temp\mynodes.csv'


    Mit dem Schlüsselwort WHERE können zurückgegebene Objekte gefiltert werden. Beispiel:

    SELECT 
      node_id AS title, 
      MAX(us_links.conduit_width) AS mymax, 
      MIN(us_links.conduit_width) AS mymin 
     FROM node 
     WHERE MAX(us_links.conduit_width) > 450


    Mit dem Schlüsselwort GROUP BY können über Gruppen von Objekten aggregierte Ergebnisse berechnet werden. Beispiel:

    SELECT 
      MAX(MAX(us_links.conduit_width)) 
     GROUP BY system_type


    Die zurückgegebenen aggregierten Ergebnisse können mit dem Schlüsselwort HAVING begrenzt werden. Beispiel:

    SELECT 
      MAX(MAX(us_links.conduit_width)) 
     GROUP BY system_type 
     HAVING MAX(MAX(us_links.conduit_width)) < 1000


Unterstützte SQL-Syntax

In der folgenden Tabelle ist die in diesem Autodesk-Produkt unterstützte SQL-Syntax aufgeführt. Weitere Anmerkungen finden Sie weiter unten.

Ausführliche Informationen zur Verwendung von SQL sowie zu allen unterstützten Funktionen finden Sie im technischen Dokument SQL in InfoWorks WS Pro.

Kommentartext

Kommentartext wird ignoriert, wenn die Abfrage ausgeführt wird. Kommentare können entweder nach Zeile (wobei die ganze Zeile nach der Kommentarsyntax als Kommentartext behandelt wird) oder nach Block angegeben werden (wobei ein Block als Teil einer Zeile oder über mehrere Zeilen hinweg angegeben werden kann). Kommentartext wird im Dialogfeld SQL syntaktisch grün hervorgehoben.

Syntax Beschreibung
// Zeilenkommentar
/* Blockkommentar: Beginn des Kommentartextblocks
*/ Blockkommentar: Ende des Kommentartextblocks

Funktionen

Syntax Beschreibung

INT(Zahl)

Ganzzahlteil einer Zahl

FLOOR(Zahl)

Nächste Ganzzahl kleiner oder gleich dem Parameter

CEIL(Zahl)

Nächste Ganzzahl größer oder gleich dem Parameter

FIXED(umzurechnende Zahl,Dezimalstellenanzahl) Bei Angabe einer Zahl und einer Dezimalstellenanzahl von 0 bis 8 wird die Zahl in eine Zeichenfolge mit dieser Dezimalstellenanzahl umgerechnet und entsprechend auf- oder abgerundet. Wenn die Anzahl der Dezimalstellen 0 beträgt, hat die Zeichenfolge kein Dezimalzeichen.

ABS(x.)

Absoluter Wert von x..

Beispiel:

Die Funktion gibt x zurück, wenn x. >= 0, ansonsten -x .

LEFT(s zurück.,n)

Gibt die ersten n Zeichen der Zeichenfolge s zurück.zurück oder die gesamte Zeichenfolge, wenn n größer ist als die Länge der Zeichenfolge.

RIGHT(s zurück.,n)

Gibt die letzten n Zeichen der Zeichenfolge s zurück.zurück oder die gesamte Zeichenfolge, wenn n größer ist als die Länge der Zeichenfolge.

MID(s zurück.,n,m)

Gibt die Teilzeichenfolge der Zeichenfolge s zurück. zurück, die m Zeichen enthält, beginnend an Position n, wobei ab 1 als Startposition gezählt wird.

LEN(s zurück.)

Gibt die Länge der Zeichenfolge s zurück.

IIF(x.,y,z.)

Wenn der Ausdruck x. True lautet, wird yzurückgegeben, andernfalls z.

NVL(x.,y) Wenn x. null ist, wird yzurückgegeben, andernfalls x.

SUBST(s1,s2,s3)

Ersetzt die erste Instanz der Zeichenfolge s2 in Zeichenfolge s1 durch Zeichenfolge s3.

Beispiel:

SUBST(node_id,'01','ND')

Bei Anwendung auf Knoten-ID 01880132 wird ND880132 zurückgegeben.

GSUBST(s1,s2,s3)

Ersetzt alle Instanzen der Zeichenfolge s2 in Zeichenfolge s1 durch Zeichenfolge s3.

Beispiel:

GSUBST(node_id,'01','ND')

Bei Anwendung auf Knoten-ID 01880132 wird ND88ND32 zurückgegeben.

GENSUBST(s zurück.,regexp,format)

Ersetzt Zeichenfolge s zurück. durch das definierte Format, wenn der reguläre Ausdruck regxp der Zeichenfolge s zurück.entspricht, andernfalls wird die Zeichenfolge s zurück. unverändert zurückgegeben.

Beispiel:

GENSUBST(node_id,'(01)(..)(..)(.*)','ND\2\4a\1')

Bei Anwendung auf Knoten-ID 01880132 wird ND8832a01 zurückgegeben.

Anmerkung:
  • Mit dem regulären Ausdruck kann die Zeichenfolge durch Klammern in Unterausdrücke unterteilt werden.
  • Im obigen Beispiel entspricht (01)(..)(..)(.*) jeder Knoten-ID mit mindestens 6 Zeichen, die mit 01 beginnt. Das erste (..) entspricht dem 3. und 4. Zeichen der Zeichenfolge, das zweite (..) dem 5. und 6. Zeichen und (.*) dem Rest der Zeichenfolge.
  • Bei einer Übereinstimmung wird eine Zeichenfolge im definierten Format zurückgegeben. Dabei steht \1 für die Werte im ersten Unterausdruck in Klammern (01) und \2 für die Werte im zweiten Unterausdruck in Klammern (hier -88) usw. bis \9.
Tipp: Reguläre Ausdrücke sind leistungsstark und bieten weitaus mehr Möglichkeiten als in den hier dargestellten Beispielen gezeigt. Weitere Informationen zu regulären Ausdrücken und deren Syntax finden Sie in diesem Wikipedia-Artikel.
NL()

Gibt ein Zeilenumbruchzeichen zurück.

So richten Sie beispielsweise ein dreizeiliges Anmerkungsfeld ein

SET notes = 'Set' + NL() + 'new' + NL() + 'line'

YEARPART(s zurück.)

YEARPART wird auf das Jahr eines Datums angewendet bzw. gibt dieses zurück. Wenn das Datum 24.09.2024 lautet (bei der Formatierung TT/MM/JJJJ), lautet YEARPART 2024.

Anmerkung: Die Funktionen YEARPART, MONTHPART und DAYPART können mit Datums- und Zeichenfolgenfeldern, die als Datumsangaben formatiert sind, verwendet werden. Bei Verwendung mit einer Zeichenfolge, die kein Datum ist, wird null zurückgegeben.

MONTHPART(s zurück.)

MONTHPART wird auf den Monat eines Datums angewendet bzw. gibt diesen zurück. Im obigen Beispiel lautet MONTHPART 09.

Anmerkung: Die Funktionen YEARPART, MONTHPART und DAYPART können mit Datums- und Zeichenfolgenfeldern, die als Datumsangaben formatiert sind, verwendet werden. Bei Verwendung mit einer Zeichenfolge, die kein Datum ist, wird null zurückgegeben.

DAYPART(s zurück.)

DAYPART wird auf den Tag eines Datums angewendet bzw. gibt diesen zurück. Im obigen Beispiel lautet DAYPART 24.

Anmerkung: Die Funktionen YEARPART, MONTHPART und DAYPART können mit Datums- und Zeichenfolgenfeldern, die als Datumsangaben formatiert sind, verwendet werden. Bei Verwendung mit einer Zeichenfolge, die kein Datum ist, wird null zurückgegeben.

NOW()

Funktion ohne Parameter, die den aktuellen Zeitpunkt definiert. Diese Funktion verwendet das aktuelle Datum und die aktuelle Uhrzeit des Computers, sodass SQL-Abfragen mit der Funktion NOW nicht vor jeder Ausführung neu geschrieben werden müssen, um aktualisiert zu werden.

DATEPART(Datum)

DATEPART gibt den Datumsteil als Datum zurück (Minuten werden beispielsweise aus dem Datum entfernt).

TIMEPART(Datum)

TIMEPART gibt den Uhrzeitteil eines Datums als Anzahl von Minuten nach Mitternacht zurück.

YEARSDIFF(von,bis)

YEARSDIFF gibt die Anzahl der vollständigen Jahre zwischen zwei Datumsangaben zurück.

Anmerkung: Die Funktionen YEARSDIFF, MONTHSDIFF und DAYSDIFF ignorieren eventuelle Minutenangaben in den betreffenden Datumsangaben.

MONTHSDIFF(von,bis)

MONTHSDIFF gibt die Anzahl der vollständigen Monate zwischen zwei Datumsangaben zurück.

Anmerkung: Die Funktionen YEARSDIFF, MONTHSDIFF und DAYSDIFF ignorieren eventuelle Minutenangaben in den betreffenden Datumsangaben.

DAYSDIFF(von,bis)

DAYSDIFF gibt die Anzahl der vollständigen Tage zwischen zwei Datumsangaben zurück.

Anmerkung: Die Funktionen YEARSDIFF, MONTHSDIFF und DAYSDIFF ignorieren eventuelle Minutenangaben in den betreffenden Datumsangaben.

INYEAR(Datum,Nummer)

INYEAR gibt True zurück, wenn das Datum in dem als Zahl angegebenen Jahr liegt.

Anmerkung: Wenn einer der Parameter der Funktionen INYEAR, INMONTH, INYEARS und INMONTHS keine Zahl ist, gibt die Funktion False zurück. Wenn die Zahl keine Ganzzahl ist, wird sie auf die nächste Ganzzahl gerundet.

INMONTH(Datum, Monat, Jahr)

INMONTH gibt True zurück, wenn das Datum in dem als Zahl angegebenen Jahr und Monat liegt.

Anmerkung: Wenn einer der Parameter der Funktionen INYEAR, INMONTH, INYEARS und INMONTHS keine Zahl ist, gibt die Funktion False zurück. Wenn die Zahl keine Ganzzahl ist, wird sie auf die nächste Ganzzahl gerundet.

INYEARS(Datum,Startjahr,Endjahr)

INYEARS gibt True zurück, wenn das Datum in einem Jahr zwischen dem Start- und dem Endjahr (jeweils einschließlich) liegt.

Anmerkung: Wenn einer der Parameter der Funktionen INYEAR, INMONTH, INYEARS und INMONTHS keine Zahl ist, gibt die Funktion False zurück. Wenn die Zahl keine Ganzzahl ist, wird sie auf die nächste Ganzzahl gerundet.

INMONTHS(Datum,Startmonat,Startjahr,Endmonat,Endjahr)

INMONTHS gibt True zurück, wenn das Datum zwischen dem Startmonat im Startjahr und dem Endmonat im Endjahr liegt (jeweils einschließlich).

Anmerkung: Wenn einer der Parameter der Funktionen INYEAR, INMONTH, INYEARS und INMONTHS keine Zahl ist, gibt die Funktion False zurück. Wenn die Zahl keine Ganzzahl ist, wird sie auf die nächste Ganzzahl gerundet.

ISDATE(mutmaßliches_Datum)

Wenn das Feld ein Datum ist, da es aus der Datenbank stammt, wird True zurückgegeben. Wenn es sich um eine Zeichenfolge handelt, die in ein Datum konvertiert werden kann, wird ebenfalls True zurückgegeben; andernfalls False.

MONTHYEARPART(Datum)

MONTHYEARPART gibt die Zeichenfolge <month>/<year> zurück.

YEARMONTHPART(Datum)

YEARMONTHPART gibt die Zeichenfolge <year>/<date> zurück.

MONTHNAME(Datum)

MONTHNAME gibt den Namen des Monats (im aktuellen Gebietsschema) zurück.

SHORTMONTHAME(Datum)

SHORTMONTHNAME gibt den abgekürzten Namen des Monats zurück (abhängig vom Gebietsschema und dem Abkürzungsformat von Windows).

DAYNAME(Datum)

DAYNAME gibt den Namen des Tages (im aktuellen Gebietsschema) zurück.

SHORTDAYNAME(Datum)

SHORTDAYNAME gibt den abgekürzten Namen des Tages zurück (abhängig vom Gebietsschema und dem Abkürzungsformat von Windows).

NUMTOMONTHNAME(n) Gibt bei Angabe einer Ganzzahl von 1 bis 12 den Namen des Monats zurück.
NUMTOSHORTMONTHNAME(n) Gibt bei Angabe einer Ganzzahl von 1 bis 12 die Kurzversion eines Monatsnamens (z. B. JAN) zurück.
TODATE(Jahr,Monat,Tag) Gibt bei Angabe von Jahr, Monat und Tag als Ganzzahlen das Datum zurück.
TODATETIME(Jahr,Monat,Tag,Stunden,Minuten) Gibt bei Angabe von Jahr, Monat und Tag als Ganzzahlen das Datum zurück.

Listenfunktionen

Diese Funktionen dienen zum Aufteilen von Werten in Bereiche, zum Bewerten von Werten, zum Zuordnen von Werten zu Listen usw.

Syntax Beschreibung

AREF(n,Liste)

AREF, wenn eine Listenvariable Liste und eine Zahl zwischen 1 und der Länge von Listeangegeben ist, wird das n-te Element in der Liste zurückgegeben.

LEN(Listenvariable)

LEN gibt die Anzahl der Elemente in einer Listenvariablen zurück.

RINDEX(Ausdruck,Listenvariable)

RINDEX ist eine Funktion, die nur verwendet werden kann, wenn die Liste sortiert ist. Der Zweck der Funktion RINDEX besteht im Wesentlichen darin, Werte in Buckets zu unterteilen.

LOOKUP(Ausdruck,Listenvariable)

Wenn n Elemente in der Liste vorhanden sind und der Wert des Ausdrucks zwischen 1 und n (einschließlich) liegt, gibt LOOKUP das entsprechende Element aus der Liste zurück.

MEMBER(Ausdruck,Listenvariable)

MEMBER gibt True zurück, wenn der Wert des Ausdrucks einer der Werte in der Liste ist, andernfalls False.

INDEX(Ausdruck,Listenvariable)

Wenn das Ergebnis des Ausdrucks der erste Wert in der Liste ist, gibt INDEX 1 zurück. Wenn es der zweite Wert ist, wird 2 zurückgegeben. Wenn das Ergebnis des Ausdrucks nicht in der Liste enthalten ist, wird 1 zurückgegeben.

TITLE(n,Liste)

TITLE stellt Titel für die Buckets bereit, wenn RINDEX verwendet wird, um Werte in eine Reihe von Bereichen zu unterteilen.

Mathematische Funktionen

Syntax Beschreibung

LOG(x.)

Berechnet den Logarithmus (Basis 10) von x..

LOGE(x.)

Berechnet den Logarithmus (Basis e) von x..

EXP(x.)

Berechnet ex.

SIN(x.)

Berechnet den Sinus von x..

COS(x.)

Berechnet den Kosinus von x..

TAN(x.)

Berechnet den Tangens von x..

ASIN(x.)

Berechnet den Arkussinus von x..

ACOS(x.)

Berechnet den Arkuskosinus von x..

ATAN(x.)

Berechnet den Arkustangens von x..

ATAN2(x.,y)

Berechnet den Arkustangens von x. / y unter Verwendung der Zeichen x. and y zur Bestimmung des Quadranten.

GAMMALN(x.)

Gibt den Logarithmus (Basis e) der Gamma-Funktion von x.zurück.

Aggregatfunktionen

Aggregatfunktionen ermöglichen die Berechnung von Werten basierend auf folgenden Elementen:

  • alle Zeilen eines Anordnungsfelds
  • alle mit dem abgefragten Objekt in einer bestimmten Weise verwandten Objekte
  • alle Zeitschritte in den Simulationsergebnissen
Syntax Beschreibung

ANY(bedingter Ausdruck)

ANY gibt True zurück, wenn der Ausdruck für eine beliebige Zeile des Anordnungsfelds wahr ist. Beispiel:

ANY(details.code=’JDS’)

Gibt true zurück, wenn eine der Zeilen des Detailanordnungsfelds den Code JDS enthält, andernfalls false.

Anmerkung: Der Ausdruck in Klammern kann mehrere Anordnungsfelder, andere Felder des Objekts, Konstanten und Nicht-Aggregatfunktionen enthalten. Diese können mit arithmetischen, vergleichenden und logischen Operatoren kombiniert werden.

ALL(bedingter Ausdruck)

ALL gibt True zurück, wenn der Ausdruck für alle Zeilen/verwandten Objekte/Zeitschritte wahr ist.

COUNT(bedingter Ausdruck)

COUNT zählt die Anzahl der Zeilen/verwandten Objekte/Zeitschritte, für die der Ausdruck wahr ist.

MAX(bedingter Ausdruck)

MAX gibt den Maximalwert (Zahl, Datum oder Zeichenfolge) für alle Zeilen/verwandten Objekte/Zeitschritte zurück.

Anmerkung: MAX und MIN funktionieren beide mit numerischen Feldern, Datumsfeldern und Zeichenfolgenfeldern. Bei Zeichenfolgenfeldern erfolgt der Vergleich zwischen Zeichenfolgen basierend auf der Sprache der Windows-Installation.

MIN(bedingter Ausdruck)

MIN gibt den Minimalwert (Zahl, Datum oder Zeichenfolge) für alle Zeilen/verwandten Objekte/Zeitschritte zurück.

Anmerkung: MAX und MIN funktionieren beide mit numerischen Feldern, Datumsfeldern und Zeichenfolgenfeldern. Bei Zeichenfolgenfeldern erfolgt der Vergleich zwischen Zeichenfolgen basierend auf der Sprache der Windows-Installation.

AVG(bedingter Ausdruck)

AVG gibt den Mittelwert aller Werte des Ausdrucks (nur numerisch), die ungleich null sind, für alle Zeilen/verwandten Objekte/Zeitschritte zurück.

FIRST(bedingter Ausdruck)

FIRST gibt den Wert des Ausdrucks für die erste Zeile/das erste verwandte Objekt/den ersten Zeitschritt zurück.

LAST(bedingter Ausdruck)

LAST gibt den Wert des Ausdrucks für die letzte Zeile/das letzte zugehörige Objekt/den letzten Zeitschritt zurück. Daher wird bei der Berechnung des Werts einer der Datensätze im Anordnungsfeld berücksichtigt.

Arithmetische Operatoren

Syntax Beschreibung

+

Alle diese Operatoren verhalten sich so, wie es von Zahlen zu erwarten ist.


<> bedeutet je nach Kontext Ungleich oder Ist nicht gleich.


Darüber hinaus kann + zur Verkettung von Zeichenfolgen verwendet werden. + ist der einzige arithmetische Operator mit einer speziellen Bedeutung für Zeichenfolgen.

-

*

/

=

<

<=

>

>=

<>

^

Der Operator ^ bedeutet Potenzieren. Beispiel: x^2 bedeutet x zum Quadrat.

%

Der Operator % bedeutet Modul von, d. h. a % b ergibt den Rest von a / b. Jahr % 10 gibt beispielsweise die letzte Ziffer des Jahres an.

Logische Operatoren

Syntax Beschreibung

AND

Selbsterklärend

ODER

NOT

Andere Operatoren

Syntax Beschreibung

IS NULL

Gibt true zurück, wenn ein Feld NULL ist.

IS NOT NULL

Gibt true zurück, wenn ein Feld nicht NULL ist.

LIKE

Die beiden folgenden Sonderzeichen können mit LIKE verwendet werden:

  • * steht für eine Übereinstimmung mit einem beliebigen Wert.
  • ? steht für eine Übereinstimmung mit einem Zeichen.

Jedes andere Zeichen in einer Zeichenfolge stimmt nur mit sich selbst überein.

Der Abgleich erfolgt wie unter DOS:

  • LIKE '*' steht für eine Übereinstimmung mit einem beliebigen Wert.
  • LIKE 'ABC*' steht für eine Übereinstimmung mit einem beliebigen mit ABC beginnenden Wert.
  • LIKE '???' steht für eine Übereinstimmung mit einer beliebigen dreistelligen Zeichenfolge.

Wie unter DOS werden für * immer alle Werte zurückgegeben. Daher können z. B. mit LIKE '*AB' keine Zeichenfolgen, die auf AB enden, bzw. mit LIKE '*AB*' keine Zeichenfolgen, die AB enthalten, ermittelt werden.

Beachten Sie, dass sich dieses Verhalten von LIKE von dem Verhalten in Microsoft Access unterscheidet.

MATCHES

MATCHES ermöglicht komplexere Suchvorgänge als mit dem LIKE-Operator, indem reguläre Ausdrücke verwendet werden.

Wichtige Syntaxelemente:

  • . (Punkt): beliebiges alphanumerisches Zeichen
  • * (Sternchen): null oder mehr des vorherigen Zeichens. B* entspricht also null oder mehr Buchstaben B.
  • + (Plus): eines oder mehr des vorherigen Zeichens. B+ entspricht also einem oder mehr Buchstaben B.
  • ? (Fragezeichen): null oder eines des vorherigen Zeichens. B? entspricht also null oder einem Buchstaben B.

Der Abgleich funktioniert wie folgt:

  • MATCHES '.*' steht für eine Übereinstimmung mit einem beliebigen Wert.
  • MATCHES 'ABC.*' steht für eine Übereinstimmung mit einer beliebigen mit ABC beginnenden Zeichenfolge.
  • MATCHES 'ABC.+' steht für eine Übereinstimmung mit einer beliebigen mit ABC beginnenden Zeichenfolge, gefolgt von mindestens einem weiteren Zeichen.
  • MATCHES '.*ABC.*' steht für eine Übereinstimmung mit einer beliebigen ABC enthaltenden Zeichenfolge.
  • MATCHES '.*ABC' steht für eine Übereinstimmung mit einer beliebigen auf ABC endenden Zeichenfolge.
  • MATCHES 'RS*' steht für eine Übereinstimmung mit einer beliebigen mit R beginnenden Zeichenfolge, gefolgt von null oder mehr Buchstaben S.

Reguläre Ausdrücke sind leistungsstark und bieten weitaus mehr Möglichkeiten als in den obigen Beispielen gezeigt. Weitere Informationen zu regulären Ausdrücken und deren Syntax finden Sie in diesem Wikipedia-Artikel.

Konstanten

Syntax Beschreibung

JA

Selbsterklärend

FALSE

NULL

Aggregatfunktionen (nur Ergebnisse)

Es ist möglich, die Aggregatfunktionen für alle Simulationsergebnisse statt nur für einen Snapshot zu verwenden, indem tsr anstelle von sim verwendet wird.

Syntax Beschreibung

DURATION(bedingter Ausdruck)

Zeit (in Minuten), für die der Ausdruck True lautet (nur Ergebnisse). Beispiel:

DURATION(tsr.pressure < x)

Gibt die kumulative Zeit (in Minuten) zurück, in der ein Knoten einen Druck unter x.aufweist.

INTEGRAL(bedingter Ausdruck)

Summe des Ausdruckswerts für jeden Zeitschritt, multipliziert mit der Länge des Zeitschritts in Minuten (nur Ergebnisse). Beispiel:

INTEGRAL(tsr.flow*60)

Gibt das Gesamtvolumen des durch ein Rohr geflossenen Wassers (in Litern) zurück, wenn als Volumenstromeinheit l/s verwendet wird.

WHENEARLIEST(bedingter Ausdruck)

Frühester Zeitpunkt, für den der Ausdruck True lautet (nur Ergebnisse). Beispiel:

WHENEARLIEST(tsr.pressure < x)

Gibt das Datum und die Uhrzeit des frühesten Zeitschritts zurück, bei dem ein Knoten einen Druck unter x.aufweist.

WHENLATEST(bedingter Ausdruck)

Spätester Zeitpunkt, an dem der Ausdruck True lautet (nur Ergebnisse). Beispiel:

WHENLATEST(tsr.pressure < x)

Gibt das Datum und die Uhrzeit des letzten Zeitschritts zurück, bei dem ein Knoten einen Druck unter x.aufweist.

EARLIEST(bedingter Ausdruck)

Erster Wert ungleich null des Ausdrucks (nur Ergebnisse). Dies wird wahrscheinlich nur dann zu einer sinnvollen Antwort führen, wenn die Option in Kombination mit der Funktion IIF verwendet wird. Beispiel:

EARLIEST(IIF(tsr.pressure < x, tsr.pressure, NULL))

Gibt den Druck eines Knotens am frühesten Zeitschritt zurück, bei dem der Druck des Knotens unter x.lag.

LATEST(bedingter Ausdruck)

Letzter Wert ungleich null des Ausdrucks (nur Ergebnisse). Dies wird wahrscheinlich nur dann zu einer sinnvollen Antwort führen, wenn die Option in Kombination mit der Funktion IIF verwendet wird. Beispiel:

LATEST(IIF(tsr.pressure < x, tsr.pressure, NULL))

Gibt den Druck eines Knotens am spätesten Zeitschritt zurück, bei dem der Druck des Knotens unter x.lag.

WHENMAX(bedingter Ausdruck)

Zeitpunkt, zu dem der Ausdruck sein Maximum erreicht hat (nur Ergebnisse). Beispiel:

WHENMAX(tsr.pressure)

Gibt das Datum und die Uhrzeit zurück, zu dem/der ein Knoten den aufgezeichneten maximalen Druck erreicht.

WHENMIN(bedingter Ausdruck)

Zeitpunkt, zu dem der Ausdruck sein Minimum erreicht hat (nur Ergebnisse). Beispiel:

WHENMIN(tsr.pressure)

Gibt das Datum und die Uhrzeit zurück, zu dem/der ein Knoten den aufgezeichneten minimalen Druck erreicht.

Zusätzliche Anmerkungen zur Verwendung von SQL

  1. Die SQL-Engine führt keine umfangreiche Typprüfung durch, sodass Sie zahlreiche nützliche Aufgaben durchführen können. Beispiele:
    1. SET user_number_1 = x > 390000
      setzt bei x > 390000 den Parameter user_number_1 auf 1, andernfalls auf 0, da bedingte Ausdrücke für True in 1 und für False in 0 ausgewertet werden.
    2. SET user_text_1 = z
      setzt user_text_1 auf den Wert z. Beachten Sie, dass in diesem Fall unnötige Dezimalzeichen und Dezimalstellen in den Zeichenfolgen abgeschnitten werden, damit diese Zeichenfolgen bei Bedarf am Ende weiter verkettet werden können.
    3. SET user_number_1 = user_text_1
      weist den Wert zu, wenn es sich bei der Zeichenfolge um eine gültige Zahl handelt.
  2. Das Verhalten von NULL ist etwas komplexer.
    1. Im Wesentlichen entspricht NULL dem Wert "kein Wert". Die Tabellenansichten funktionieren bei Zahlen insofern genauso, als dass ein Unterschied zwischen der Eingabe von 0 und dem Leerlassen einer Rasterzelle besteht. Leere Werte entsprechen NULL, d. h., für x IS NULL werden die Objekte mit leeren Zellen ausgewählt.
    2. Gemäß der allgemeinen Regel für SQL gibt jede Operation, die einen beliebigen Wert und NULL enthält, NULL zurück. Beispiele:
      • 3 + NULL ist NULL
      • 3 > NULL ist NULL
      • 3 < NULL ist NULL

      Die SQL-Engine behandelt Gleichheit geringfügig anders. x = NULL und x <> NULL verhalten sich genauso wie X IS NULL und X IS NOT NULL.

  3. Bei Zeichenfolgen ist eine leere Zeichenfolge gleichzeitig NULL und "" (leere Zeichenfolge). Folglich werden bei
    • asset_id IS NULL
    • asset_id = ""
    • LEN(asset_id)=0
    alle Objekte ohne Asset-ID-Zeichenfolge ausgewählt.
  4. Boolesche Felder (Felder mit Kontrollkästchen) haben kein Konzept von NULL.
  5. Möglicherweise tritt ein Analysefehler auf, wenn Sie einen Feldnamen eingeschlossen haben, der mit einer Zahl beginnt. Es wird empfohlen, solche Feldnamen in der SQL-Abfrage in [ ] zu setzen.

    Beispiel: Anstatt

    SET 2d_pt_id = subcatchment_id
    zu schreiben, können Sie
    SET [2d_pt_id] = subcatchment_id
    verwenden.