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:
Mit Ausnahme der ersten drei Aufgaben gilt Folgendes:
Nachfolgend finden Sie weitere Informationen zu den Schlüsselwörtern:
So heben Sie die Auswahl auf
CLEAR SELECTION
So legen Sie eine skalare Variable fest
LET <Variablenname> = <Wert>
So legen Sie eine Listenvariable fest
LIST <Variablenname> = <Wert>, <Wert>, <Wert>, <Wert>
So wählen Sie mit dem Schlüsselwort SELECT Objekte aus
SELECT
SELECT ALL
SELECT SELECTED
SELECT FROM conduit
SELECT ALL FROM conduit
SELECT SELECTED FROM conduit
SELECT WHERE x > 0
SELECT ALL WHERE x > 0
SELECT SELECTED WHERE x > 0
SELECT FROM conduit WHERE conduit_width > 250
SELECT ALL FROM conduit WHERE conduit_width > 250
SELECT SELECTED FROM conduit WHERE conduit_width > 250
Wenn Sie mit dem aktuellen Auswahlmodus eine Auswahl aus der aktuellen Tabelle treffen, kann das Schlüsselwort SELECT weggelassen werden:
x > 0
So heben Sie mit dem Schlüsselwort DESELECT die Auswahl von Objekten auf
DESELECT
DESELECT ALL
DESELECT SELECTED
DESELECT FROM conduit
DESELECT ALL FROM conduit
DESELECT SELECTED FROM conduit
DESELECT WHERE x > 0
DESELECT ALL WHERE x > 0
DESELECT SELECTED WHERE x > 0
DESELECT FROM conduit WHERE conduit_width > 250
DESELECT ALL FROM conduit WHERE conduit_width > 250
DESELECT SELECTED FROM conduit WHERE conduit_width > 250
So löschen Sie Objekte mit dem Schlüsselwort DELETE
DELETE
DELETE ALL
DELETE SELECTED
DELETE FROM conduit
DELETE ALL FROM conduit
DELETE SELECTED FROM conduit
DELETE WHERE x > 0
DELETE ALL WHERE x > 0
DELETE SELECTED WHERE x > 0
DELETE FROM conduit WHERE conduit_width > 250
DELETE ALL FROM conduit WHERE conduit_width > 250
DELETE SELECTED FROM conduit WHERE conduit_width > 250
Verwenden Sie zum Ändern der Werte von Feldern oder Variablen das Schlüsselwort SET. 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 100 WHERE ground_level > 20
UPDATE node SET x = x - 100, y = y - 100100 WHERE ground_level > 20
UPDATE ALL node SET x = x - 100, y = y - 100 100 WHERE ground_level > 20
UPDATE SELECTED node SET x = x - 100, y = y - 100 100 WHERE ground_level > 20
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.
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:
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:
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as '£% my min'
Die Tabelle kann überschrieben werden.
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 wird eine Datei angegeben.
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'
Die betreffenden Objekte können mit dem Schlüsselwort WHERE gefiltert werden.
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
Die berechneten Ergebnisse können über Gruppen von Objekten aggregiert werden.
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.
SELECT MAX(MAX(us_links.conduit_width)) GROUP BY system_type HAVING MAX(MAX(us_links.conduit_width))<1000
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 wird ignoriert, wenn die Abfrage ausgeführt wird.
| /* | Anfang des Kommentartexts |
| */ | Ende des Kommentartexts |
|
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. Die Funktion gibt x zurück, wenn x >= 0, andernfalls -x. |
|
left(s,n) |
Gibt die ersten n Zeichen der Zeichenfolge s oder die gesamte Zeichenfolge zurück, wenn n größer als die Länge der Zeichenfolge ist. |
|
right(s,n) |
Gibt die letzten n Zeichen der Zeichenfolge s oder die gesamte Zeichenfolge zurück, wenn n größer als die Länge der Zeichenfolge ist. |
|
mid(s,n,m) |
Gibt die Teilzeichenfolge der Zeichenfolge s mit m Zeichen ab Position n zurück, beginnend mit 1 als Startposition. |
|
len(s) |
Gibt die Länge der Zeichenfolge s zurück. |
|
iif(x,y,z) |
Gibt y zurück, wenn der Ausdruck x wahr ist, andernfalls z. |
| nvl(x,y) | Gibt y zurück, wenn x null ist, andernfalls x. |
|
subst(s1,s2,s3) |
Ersetzt das erste Vorkommen der Zeichenfolge s2 in der Zeichenfolge s1 durch die Zeichenfolge s3. Beispiel: subst(node_id,'01','ND') Bei Anwendung auf Knoten-ID 01880132 wird ND880132 zurückgegeben. |
|
gsubst(s1,s2,s3) |
Ersetzt alle Vorkommen der Zeichenfolge s2 in der Zeichenfolge s1 durch die Zeichenfolge s3. Beispiel: gsubst(node_id,'01','ND') Bei Anwendung auf Knoten-ID 01880132 wird ND88ND32 zurückgegeben. |
|
gensubst(s,regAusdr,Format) |
Ersetzt die Zeichenfolge s durch das definierte Format, wenn der reguläre Ausdruck regAusdr mit der Zeichenfolge s übereinstimmt. Andernfalls wird die Zeichenfolge s unverändert zurückgegeben. Beispiel: gensubst(node_id,'(01)(..)(..)(.*)','ND\2\4a\1') Bei Anwendung auf Knoten-ID 01880132 wird ND8832a01 zurückgegeben.
|
| nl() |
Gibt ein Zeilenumbruchzeichen zurück. So richten Sie beispielsweise ein dreizeiliges Anmerkungsfeld ein SET notes = 'Set'+NL()+'new'+NL()+'line' |
|
yearpart(s) |
YEARPART wird auf das Jahr eines Datums angewendet bzw. gibt dieses zurück. Wenn das Datum 24/09/2007 lautet, ist YEARPART 2007. 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) |
MONTHPART wird auf den Monat eines Datums angewendet bzw. gibt diesen zurück. Im obigen Beispiel ist 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) |
DAYPART wird auf den Tag eines Datums angewendet bzw. gibt diesen zurück. Im obigen Beispiel ist 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 <Monat>/<Jahr> zurück. |
|
YEARMONTHPART(Datum) |
YEARMONTHPART gibt die Zeichenfolge <Jahr>/<Datum> 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. |
Diese Funktionen dienen zum Aufteilen von Werten in Bereiche, zum Bewerten von Werten, zum Zuordnen von Werten zu Listen usw.
|
AREF(n,Liste) |
AREF gibt bei Angabe einer Listenvariablenliste und einer Zahl zwischen 1 und der Länge der Liste das n-te Element in der Liste zurück. |
|
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 die Liste n Elemente enthält und der Wert des Ausdrucks zwischen 1 und einschließlich n 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. |
|
LOG(x) |
Berechnet den Logarithmus (Basis 10) von x. |
|
LOGE(x) |
Berechnet den Logarithmus (Basis e) von x. |
|
EXP(x) |
Berechnet e^x. |
|
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 mithilfe der Vorzeichen von x und y, um den Quadranten zu ermitteln. |
|
GAMMALN(x) |
Gibt den LOG-Wert (Basis e) der Gamma-Funktion von x zurück. |
Aggregatfunktionen ermöglichen die Berechnung von Werten basierend auf folgenden Elementen:
|
ANY |
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. 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 |
ALL gibt True zurück, wenn der Ausdruck für alle Zeilen/verwandten Objekte/Zeitschritte wahr ist. |
|
COUNT |
COUNT zählt die Anzahl der Zeilen/verwandten Objekte/Zeitschritte, für die der Ausdruck wahr ist. |
|
MAX |
MAX gibt den Maximalwert (Zahl, Datum oder Zeichenfolge) für alle Zeilen/verwandten Objekte/Zeitschritte zurück. |
|
MIN |
MIN gibt den Minimalwert (Zahl, Datum oder Zeichenfolge) für alle Zeilen/verwandten Objekte/Zeitschritte zurück. MAX und MIN funktionieren mit numerischen Feldern, Datumsfeldern und Zeichenfolgenfeldern. Bei Zeichenfolgenfeldern erfolgt der Vergleich zwischen Zeichenfolgen basierend auf der Sprache der Windows-Installation. |
|
AVG |
AVG gibt den Mittelwert aller Werte des Ausdrucks (nur numerisch), die ungleich null sind, für alle Zeilen/verwandten Objekte/Zeitschritte zurück. |
|
FIRST |
FIRST gibt den Wert des Ausdrucks für die erste Zeile/das erste verwandte Objekt/den ersten Zeitschritt zurück. |
|
LAST |
LAST gibt den Wert des Ausdrucks für die erste Zeile/das erste verwandte Objekt/den ersten Zeitschritt zurück. Daher wird bei der Berechnung des Werts einer der Datensätze im Anordnungsfeld berücksichtigt. |
|
+-*/><=>=<=<> |
Alle diese Operatoren verhalten sich bei Zahlen erwartungsgemäß. <> bedeutet "ungleich". 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". |
|
% |
a % b gibt den Rest von a / b an, z. B. gibt Jahr % 10 die letzte Ziffer des Jahres an. |
|
ANDORNOT |
Selbsterklärend |
|
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:
Jedes andere Zeichen in einer Zeichenfolge stimmt nur mit sich selbst überein. Der Abgleich erfolgt wie unter DOS:
Wie unter DOS werden für * immer alle Werte zurückgegeben. Daher können z. B. nicht mit LIKE '*AB' Zeichenfolgen, die auf AB enden, oder mit LIKE '*AB*' 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 LIKE mithilfe regulärer Ausdrücke. Wichtige Syntaxelemente:
Der Abgleich funktioniert wie folgt:
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. |
|
True False NULL |
Selbsterklärend |
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.
|
DURATION |
DURATION: Zeit (in Minuten), für die der Ausdruck True lautet (nur Ergebnisse) |
|
INTEGRAL |
INTEGRAL: Summe des Ausdruckswerts für jeden Zeitschritt, multipliziert mit der Länge des Zeitschritts in Minuten (nur Ergebnisse) |
|
WHENEARLIEST |
WHENEARLIEST: Frühester Zeitpunkt, für den der Ausdruck True lautet (nur Ergebnisse) |
|
WHENLATEST |
WHENLATEST: Spätester Zeitpunkt, für den der Ausdruck True lautet (nur Ergebnisse) |
|
EARLIEST |
EARLIEST: Erster Wert ungleich null des Ausdrucks (nur Ergebnisse) |
|
LATEST |
LATEST: Letzter Wert ungleich null des Ausdrucks (nur Ergebnisse) |
|
WHENMAX |
WHENMAX: Zeitpunkt, zu dem der Ausdruck sein Maximum erreicht hat (nur Ergebnisse) |
|
WHENMIN |
WHENMIN: Zeitpunkt, zu dem der Ausdruck sein Minimum erreicht hat (nur Ergebnisse) |
Die SQL-Engine behandelt Gleichheit geringfügig anders. x = NULL und x <> NULL entsprechen X IS NULL und X IS NOT NULL.