Literaler

En literal (kallas även konstant) representerar ett fast data värde.

Strängliteraler

En stränglitteral används för att ange ett tecken Strängs värde.

Syntax

'char [ ... ]' | "char [ ... ]"

Parametrar

  • char

    Ett Character från teckenuppsättningen. Används \ för att undanta specialtecken (t. ex. ' eller \ ).

Exempel

SELECT 'Hello, World!' AS col;
+-------------+
|          col|
+-------------+
|Hello, World!|
+-------------+
```sql
SELECT "Spark SQL" AS col;
+-------------+
|          col|
+-------------+
|Spark SQL    |
+-------------+
SELECT 'it\'s $10.' AS col;
+---------+
|      col|
+---------+
|It's $10.|
+---------+

Binära litteraler

En binär literal används för att ange ett värde för byte-sekvens.

Syntax

X { 'num [ ... ]' | "num [ ... ]" }

Parametrar

  • NUM

    Ett hexadecimalt tal från 0 till F.

Exempel

SELECT X'123456' AS col;
+----------+
|       col|
+----------+
|[12 34 56]|
+----------+

Null-literaler

En null-literal används för att ange ett null-värde.

Syntax

NULL

Exempel

SELECT NULL AS col;
+----+
| col|
+----+
|NULL|
+----+

Booleska litteraler

En boolesk literal används för att ange ett booleskt värde.

Syntax

TRUE | FALSE

Exempel

SELECT TRUE AS col;
+----+
| col|
+----+
|true|
+----+

Numeriska litteraler

En numerisk literal används för att ange ett fast eller flyttal-nummer.

Heltals strängar

Syntax

[ + | - ] digit [ ... ] [ L | S | Y ]

Parametrar

  • siffra: valfri siffra från 0 till 9.
  • L: Skift läges okänslig, indikerar BIGINT , vilket är ett heltal med 8 bytes heltal.
  • S: Skift läges okänslig, indikerar SMALLINT , vilket är ett heltal med två bytes signerat heltal.
  • Y: Skift läges okänslig, indikerar TINYINT , vilket är ett heltal med 1 byte-signerat heltal.
  • Standard (ingen postfix): anger ett heltal som är signerat med fyra byte.

Exempel

SELECT -2147483648 AS col;
+-----------+
|        col|
+-----------+
|-2147483648|
+-----------+

SELECT 9223372036854775807l AS col;
+-------------------+
|                col|
+-------------------+
|9223372036854775807|
+-------------------+

SELECT -32Y AS col;
+---+
|col|
+---+
|-32|
+---+

SELECT 482S AS col;
+---+
|col|
+---+
|482|
+---+

Bråk tals litteraler

Syntax

  • Decimala litteraler:

    decimal_digits { [ BD ] | [ exponent BD ] } | digit [ ... ] [ exponent ] BD
    
  • Dubbla litteraler:

    decimal_digits  { D | exponent [ D ] }  | digit [ ... ] { exponent [ D ] | [ exponent ] D }
    
  • Flytande litteraler:

    decimal_digits  { F | exponent [ F ] }  | digit [ ... ] { exponent [ F ] | [ exponent ] F }
    

var decimal_digits definieras som

[ + | - ] { digit [ ... ] . [ digit [ ... ] ] | . digit [ ... ] }

och exponent definieras som E [ + | - ] digit [ ... ] .

Parametrar

  • siffra: valfri siffra från 0 till 9.
  • D: Skift läges okänsligt anger DOUBLE , vilket är ett tal med 8 bytes double-precision-flyttal.
  • F: Skift läges okänsligt anger FLOAT , vilket är ett 4-bytes flyttal med enkel precision.
  • BD: Skift läges okänsligt anger DECIMAL , med det totala antalet siffror som precision och antalet siffror till höger om decimal tecknet som skala.

Exempel

SELECT 12.578 AS col;
+------+
|   col|
+------+
|12.578|
+------+

SELECT -0.1234567 AS col;
+----------+
|       col|
+----------+
|-0.1234567|
+----------+

SELECT -.1234567 AS col;
+----------+
|       col|
+----------+
|-0.1234567|
+----------+

SELECT 123. AS col;
+---+
|col|
+---+
|123|
+---+

SELECT 123.BD AS col;
+---+
|col|
+---+
|123|
+---+

SELECT 5E2 AS col;
+-----+
|  col|
+-----+
|500.0|
+-----+

SELECT 5D AS col;
+---+
|col|
+---+
|5.0|
+---+

SELECT -5BD AS col;
+---+
|col|
+---+
| -5|
+---+

SELECT 12.578e-2d AS col;
+-------+
|    col|
+-------+
|0.12578|
+-------+

SELECT -.1234567E+2BD AS col;
+---------+
|      col|
+---------+
|-12.34567|
+---------+

SELECT +3.e+3 AS col;
+------+
|   col|
+------+
|3000.0|
+------+

SELECT -3.E-3D AS col;
+------+
|   col|
+------+
|-0.003|
+------+

Datetime-literaler

En datetime-literal används för att ange ett datum/tid-värde.

Exakt datum

Syntax

DATE { 'yyyy' |
       'yyyy-[m]m' |
       'yyyy-[m]m-[d]d' |
       'yyyy-[m]m-[d]d[T]' }

Anteckning

Om du inte anger month eller day , standardvärdet 01 .

Exempel

SELECT DATE '1997' AS col;
+----------+
|       col|
+----------+
|1997-01-01|
+----------+

SELECT DATE '1997-01' AS col;
+----------+
|       col|
+----------+
|1997-01-01|
+----------+

SELECT DATE '2011-11-11' AS col;
+----------+
|       col|
+----------+
|2011-11-11|
+----------+

Tidsstämplar-litteraler

Syntax

TIMESTAMP { 'yyyy' |
            'yyyy-[m]m' |
            'yyyy-[m]m-[d]d' |
            'yyyy-[m]m-[d]d ' |
            'yyyy-[m]m-[d]d[T][h]h[:]' |
            'yyyy-[m]m-[d]d[T][h]h:[m]m[:]' |
            'yyyy-[m]m-[d]d[T][h]h:[m]m:[s]s[.]' |
            'yyyy-[m]m-[d]d[T][h]h:[m]m:[s]s.[ms][ms][ms][us][us][us][zone_id]'}

Anteckning

Om du inte anger hour , minute eller second , standardvärdet 00 .

zone_id bör ha ett av formulären:

  • Z -Zulu Time Zone UTC + 0
  • +|-[h]h:[m]m
  • Ett ID med ett av prefixen UTC+ ,, UTC- , GMT+ GMT- UT+ eller UT- och ett suffix i formaten:
    • +|-h[h]
    • +|-hh[:]mm
    • +|-hh:mm:ss
    • +|-hhmmss
  • Regionbaserade zon-ID: n i formuläret <area>/<city> , till exempel Europe/Paris .

Anteckning

Om du inte anger zone_id standardvärdet för den lokala sessionens tidszon (anges med spark.sql.session.timeZone ).

Exempel

SELECT TIMESTAMP '1997-01-31 09:26:56.123' AS col;
+-----------------------+
|                    col|
+-----------------------+
|1997-01-31 09:26:56.123|
+-----------------------+

SELECT TIMESTAMP '1997-01-31 09:26:56.66666666UTC+08:00' AS col;
+--------------------------+
|                      col |
+--------------------------+
|1997-01-30 17:26:56.666666|
+--------------------------+

SELECT TIMESTAMP '1997-01' AS col;
+-------------------+
|                col|
+-------------------+
|1997-01-01 00:00:00|
+-------------------+

Intervall litteraler

Ett intervalls-literal anger en fast tids period.

INTERVAL interval_value interval_unit [ interval_value interval_unit ... ] |
INTERVAL 'interval_value interval_unit [ interval_value interval_unit ... ]' |
INTERVAL interval_string_value interval_unit TO interval_unit

Parametrar

  • interval_value

    Uttryck

    [ + | - ] number_value | '[ + | - ] number_value'
    
  • interval_string_value

    sträng för år-månad/dag-tidsintervall.

  • interval_unit

    Uttryck

    YEAR[S] | MONTH[S] | WEEK[S] | DAY[S] | HOUR[S] | MINUTE[S] | SECOND[S] | MILLISECOND[S] | MICROSECOND[S]
    

Exempel

SELECT INTERVAL 3 YEAR AS col;
+-------+
|    col|
+-------+
|3 years|
+-------+
SELECT INTERVAL -2 HOUR '3' MINUTE AS col;
+--------------------+
|                 col|
+--------------------+
|-1 hours -57 minutes|
+--------------------+
SELECT INTERVAL '1 YEAR 2 DAYS 3 HOURS';
+----------------------+
|                   col|
+----------------------+
|1 years 2 days 3 hours|
+----------------------+
SELECT INTERVAL 1 YEARS 2 MONTH 3 WEEK 4 DAYS 5 HOUR 6 MINUTES 7 SECOND 8 MILLISECOND 9 MICROSECONDS AS col;
+-----------------------------------------------------------+
|                                                        col|
+-----------------------------------------------------------+
|1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds|
+-----------------------------------------------------------+
SELECT INTERVAL '2-3' YEAR TO MONTH AS col;
+----------------+
|             col|
+----------------+
|2 years 3 months|
+----------------+
SELECT INTERVAL '20 15:40:32.99899999' DAY TO SECOND AS col;
+---------------------------------------------+
|                                          col|
+---------------------------------------------+
|20 days 15 hours 40 minutes 32.998999 seconds|
+---------------------------------------------+