Special Syntax

There are several kinds of strings:

Copy
db> 
SELECT 'A simple string';
{'A simple string'}
Copy
db> 
SELECT "Also a simple string";
{'Also a simple string'}
Copy
db> 
SELECT '\'escaped quotes\'';
{"'escaped quotes'"}
Copy
db> 
SELECT r"Raw string where escapes aren\'t special";
{"Raw string where escapes aren\'t special"}
Copy
db> 
... 
... 
SELECT 'A
    multi line
    string';
{'A
    multi line
    string'}
Copy
db> 
... 
... 
SELECT 'A \
    string with \
    line continuation';
{'A string with line continuation'}

Literals for limited range/precision numbers (like std::int64 and std::float64):

Copy
db> 
SELECT 42;
{42}
Copy
db> 
SELECT 12.3;
{12.3}

Literals for unlimited range/precision numbers (like std::bigint and std::decimal):

Copy
db> 
SELECT 42n;
{42n}
Copy
db> 
SELECT 1000000000000000000000000000000000000n;
{1000000000000000000000000000000000000n}
Copy
db> 
SELECT 12.3n;
{12.3n}
Copy
db> 
SELECT 12.300000000000000000000000000000045n;
{12.300000000000000000000000000000045n}

It’s possible to quote odd identifiers:

Copy
# If a reserved keyword needs to be used
# as identifier it can be quoted.
SELECT `Union`.content;

# Identifiers containing symbols other than
# typical alphanumerics can also be created by
# quoting.
SELECT `Odd-Type-Name`.value;

Link properties are accessed by using the @:

Copy
# This will just select all the link properties "list_order"
# (if they were defined on the actors link). By itself this
# is not a practical query, but it can be more meaningful as
# a sub-query for a specific movie.
SELECT Movie.actors@list_order;

# Here's a more practical use of querying link properties
# in a shape.
SELECT Movie {
    title,
    actors: {
        full_name,
        @list_order,
    } ORDER BY Movie.actors@list_order
};
Light
Dark
System