Abfragesprache SQL
Für eine Abfrage aus der HISTVAL- und ALERT-Tabellen über den OLE DB-Provider gilt die Abfragesprache SQL als Basis:
-
Nur lesende Abfragen (SELECT)
-
Einfache SQL-Syntax (keine Joins, Subselects und Intersects oder Unions)
-
Nur "neutralsprachliche" Abfragen sind erlaubt
-
Wildcards auch bei DP-Namen (auch hierarchisch)
-
Erweiterung der Zeitabfragen auf Millisekunden
-
Sammelmeldungen, die mehrere Einzelmeldungen mehrerer Meldebehandlungen zusammenfassen, sind erlaubt (ALERTS-tabelle).
Unterstützte SQL Befehle
Befehl | Bedeutung |
---|---|
SELECT FROM WHERE |
Auswahl von Spalten aus Tabellen, die bestimmte Bedingungen erfüllen. Hinweis: Innerhalb von SELECT Abfragen sind nur * oder Spaltennamen erlaubt, keine Ausdrücke. |
AS | Erlaubt die Angabe einer Spaltenüberschrift. |
AND | UND-Verknüpfungen von Bedingungen. |
OR | ODER-Verknüpfungen von Bedingungen. |
NOT | Negation von Bedingungen. |
( ) | Klammerung in Bedingungen. |
IN | Auswahl aus Liste. |
BETWEEN (AND) | Alle zwischen 2 Werten. |
LIKE | Vergleich mit Wildcards. |
NOT LIKE | Negation eines Vergleichs mit Wildcards. |
GROUP BY | Zusammenfassung von assoziierten Reihen. |
SUM | Summe über alle Zeilen, die mit GROUP BY selektiert wurden. |
MIN | Minimum über alle Zeilen, die mit GROUP BY selektiert wurden. |
MAX | Maximum über alle Zeilen, die mit GROUP BY selektiert wurden. |
COUNT | Zähle alle Zeilen, die mit GROUP BY selektiert wurden. |
AVG | Durchschnitt über alle Zeilen, die mit GROUP BY selektiert wurden |
ORDER BY (DESC) | Ergebniszeilen sortieren (absteigend) |
Unterstützte Operatoren
Operator | Bedeutung |
---|---|
= | Gleich |
< | Kleiner |
> | Größer |
<> | Ungleich |
<= | Kleiner oder gleich |
>= | Größer oder gleich |
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Division |
|| | Strings verbinden |
IS NULL | Abfrage, ob Spalteninhalt undefiniert |
? : | Fragezeichen-Operator (nur bei Spaltenselektion erlaubt) |
SQL-Funktionen
Funktion | Bedeutung |
---|---|
STR(x) | Konvertiert x in einen String |
INT(X) | Konvertiert x in ein Integer |
FLOAT(X) | Konvertiert x in ein Float |
STR2DATETIME(s,f) | Konvertiert s (string) in ein DBTYPE_DATE. f gibt das Datumsformat an |
DATETIME2STR(d,f) | Konvertiert d (DBTYPE_DATE) in einen String. f gibt das gewünschte Datumsformat an |
Tipps und Tricks
Machen Sie sich auch mit dem Kapitel SQL der Online-Hilfe vertraut!
-
Bei den beiden Datumsfunktionen ist die Formatangabe optional. Standardmäßig wird das Default-Format verwendet: "jjjj.mm.dd hh:mm:ss.mmm", z.B. "2001.04.22 12:11:31.000"
-
Der Formatstring kann die Parameter enthalten, die auch in der Funktion strftime() des ANSI-Standards von C vorkommen können:
Funktion Bedeutung %a abgekürzter Name des Wochentages %A voller Name des Wochentages %b abgekürzter Name des Monats %B voller Name des Monats %c lokale Darstellung von Datum und Zeit %d Tag im Monat(01-31) %H Stunde (00-23) %I Stunde (00-12) %j Tag im Jahr (001-366) %m Monat (01-12) %M Minute (00-59) %p lokales Äquivalent von AM(Vormittag) und PM(Nachmittag) %S Sekunde (00-59) %U Woche im Jahr (Sonntag ist erster Wochentag) (00-53) %w Wochentag (0-6, Sonntag ist 0) %W Woche im Jahr (Montag ist erster Wochentag, 00-53) %x lokale Darstellung des Datums %X lokale Darstellung der Zeit %y Jahr ohne Jahrhundert (00-99) %Y Jahr mit Jahrhundert %Z Name der Zeitzone %% %
-
Strings können sowohl mit einfachem (')als auch mit doppeltem Hochkomma (") begrenzt sein. Durch Voranstellen eines Backslash vor einem Sonderzeichen (also einem Stringbegrenzer oder einem Wildcard) wird dessen Bedeutung aufgehoben. Zwei Backslash ergeben den Backslash selbst als Zeichen.
-
Bei der Angabe von Wildcards in der Abfrage kann sowohl die SQL- ("%" steht für beliebige Zeichen, "_" für ein beliebiges Zeichen) als auch die WinCC OA Syntax ("*" steht für beliebige Zeichen, "?" für ein beliebiges Zeichen) verwendet werden (siehe auch Config-Eintrag usePvssWildCards im Kapitel Einträge in der Konfigurationsdatei). Defaultmäßig wird die WinCC OA Syntax verwendet, die sinnvoller ist, weil der "_" häufig als Zeichen in Datenpunktnamen verwendet wird, und in der SQL-Syntax jedem Vorkommen ein "/" vorangestellt werden müsste.
-
Kommt die Quellzeit in einer Bedingung vor, dann wird hier ausnahmsweise die Bedeutung des Gleichheitsoperators modifiziert. Es werden nämlich die Werte zurückgegeben, die zu diesem Zeitpunkt gültig waren. Diese müssen aber nicht zu diesem Zeitpunkt generiert worden sein und können daher eine frühere Quellzeit in der Datenbank haben.
Beispiel
SELECT ORIGINALVALUE, QTIME FROM HISTVAL WHERE STIME = "2001.05.01 10:30:00.000"
kann 5 "2001.05.01 10:25:55:910" zurückliefern, wenn das der letzte Eintrag vor 10:30 war. Diese Ausnahme bezieht sich nur auf die Quellzeit in der WHERE-Klausel.
Nicht unterstützte SQL-Schlüsselwörter
CREATE (DLL)
CREATE (DML)
CLOSE DATABASE
COMMIT
CONNECT
CONNECT BY PRIOR
CRINSTAB
DELETE FROM
DISTINCT
DROP
EXISTS
GRANT
HAVING
INNER JOIN
INSERT
INTERSECT
INTO TEMP
LEFT JOIN
RENAME
RESOURCE
REVOKE
RIGHT JOIN
SET AUTOCOMMIT
START WITH
UNION
UPDATE SET