SQL query¶
Introduction
The Embedded Database and ODBC Database objects support the ANSI SQL-92 standard for related database queries. A DELETE query can also be run to delete a record. All other operations, such as adding/removing/renaming, are performed using the OPC UA methods exposed by the same objects.
Note
for details on SQL statements and clauses refer to the standard.
Supported statements
SELECTDELETEUPDATE
Clause supported by the SELECT statement
FROMJOINAS(alias for tables and columns, allows regular and delimited identifiers)WHEREGROUP BYORDER BYSet function (
COUNT,MAX,MIN,AVG,SUM)HAVINGLIMITNote
the
LIMIT OFFSETvariant to limit the number of records returned is supported, e.g.SELECT * FROM Table1 LIMIT 1000 OFFSET 10returns 1000 records starting from record number 10. The offset is optional and its default value is 0.
Subqueries allowed for the FROM clause and for the IN predicate are also supported
Important
the FROM clause is obligatory, the others are optional.
Important
the clauses must always observe the following order: FROM, WHERE, GROUP, HAVING, ORDER, LIMIT.
JOIN clause
All JOIN types are supported:
crossinnerouter (
left outer,oright outer,full outer)
Note
The DBMS on which the query is performed may involve limitations.
WHERE clause
The WHERE clause supports the following operators:
<,<=,>,>=,=,<>comparison operatorsAND,ORandNOTlogical operatorsIN,LIKE,BETWEEN,IS NULLoperators
EXTRACT clause
The EXTRACT clause extracts a Date/Time component from a DateTime type column. Below are some examples:
SELECT EXTRACT(DAY FROM Time) AS "Day" FROM ...
SELECT EXTRACT(YEAR FROM Time) AS "Year" FROM ...
SELECT EXTRACT(MONTH FROM Time) AS "Month" FROM ...
SELECT EXTRACT(HOUR FROM Time) AS "Hour" FROM ...
SELECT EXTRACT(MINUTE FROM Time) AS "Minute" FROM ...
SELECT EXTRACT(SECOND FROM Time) AS "Second" FROM ...
CHAR_LENGTH clause
The CHAR_LENGTH clause obtains the length of a String type column. Below is an example:
SELECT CHAR_LENGTH(Column1) AS Column1Length FROM ...
Literal values allowed in a query
The following literal values are allowed:
trueandfalseBoolean expressionswhole numbers, decimals (the decimal separator is the point ‘
.’) and decimals in scientific notation (e.g.:-1.034E3)text strings delimited by quotation marks (e.g.:
'string')Note
to insert the quotation mark
’in a text string, it must be doubled (for example, to write'string’it is necessary to write''string'')date and time in ISO 8601 notation delimited by double quotes (e.g.:
"2004-05-23T14:25:10.487").Note
the date and time notation is non-standard ANSI SQL and makes it possible to avoid the keywords
DATE,TIMEandTIMESTAMPwithout ambiguity.
Conventions on data types in a query
The following conventions are valid:
Whole numbers are of the Int32 type.
Decimal numbers are of the Double type.
The true and false literals are interpreted as Boolean type data.
Identifiers
The following identifiers are allowed:
regular: do not contain spaces, start with an uppercase or lowercase letter and can contain numeric digits, letters and the underscore character ‘
_’.delimited: are delimited double quotes ‘
"’ and can contain any character (except the character ‘"’). Any spaces at the end are ignored.