ASOF JOIN-Syntax: Eingeschränkte Verwendung von Schlüsselwörtern (Ausstehend)¶
Achtung
Diese Verhaltensänderung ist in Bundle 2024_01 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
Das ASOF JOIN-Feature verhält sich wie folgt:
- Vor der Änderung:
Die Verwendung von ASOF und MATCH_CONDITION als Objektnamen, Objektaliasse, Sitzungsvariablen und Bindungsvariablen ist nicht eingeschränkt.
- Nach der Änderung:
ASOF und MATCH_CONDITION sind neue Schlüsselwörter. Die Verwendung dieser Schlüsselwörter in SELECT-Befehlen und Befehlen, die Sitzungs- oder Bindungsvariablen setzen oder verwenden, ist eingeschränkt.
Namen von Objekten
Wenn eine SELECT-Anweisung ASOF oder MATCH_CONDITION als Name einer Tabelle, einer Ansicht oder einer Inline-Ansicht verwendet, ist folgende Identifizierung erforderlich:
Wenn das Objekt mit doppelten Anführungszeichen im Namen erstellt wurde, verwenden Sie denselben Namen in doppelten Anführungszeichen.
Wenn das Objekt ohne Anführungszeichen im Namen erstellt wurde, verwenden Sie doppelte Anführungszeichen und Großbuchstaben.
Die folgenden Anweisungen sind zum Beispiel nicht mehr zulässig und geben Fehler zurück:
SELECT * FROM asof; WITH match_condition AS (SELECT * FROM T1) SELECT * FROM match_condition;
Wenn Sie die Objekte mit doppelten Anführungszeichen erstellt haben, beheben Sie das Problem, indem Sie doppelte Anführungszeichen verwenden:
SELECT * FROM "asof"; WITH "match_condition" AS (SELECT * FROM T1) SELECT * FROM "match_condition";
Wenn Sie die Objekte ohne doppelte Anführungszeichen erstellt haben, beheben Sie das Problem, indem Sie doppelte Anführungszeichen und Großbuchstaben verwenden:
SELECT * FROM "ASOF"; WITH "MATCH_CONDITION" AS (SELECT * FROM T1) SELECT * FROM "MATCH_CONDITION";
Bemerkung
Snowflake empfiehlt, dass Sie diese Objektnamen in Ihren Anwendungen nicht mehr verwenden.
Namen von Aliassen
Wenn eine SELECT-Anweisung ASOF oder MATCH_CONDITION als Alias verwendet, müssen Sie AS vor dem Alias verwenden oder den Alias in doppelte Anführungszeichen setzen. Die folgenden Anweisungen sind zum Beispiel nicht mehr zulässig und geben Fehler zurück:
SELECT * FROM t1 asof; SELECT * FROM t2 match_condition;
Zur Behebung des Problems gibt es folgende Optionen:
SELECT * FROM t1 AS asof; SELECT * FROM t1 "asof"; SELECT * FROM t2 AS match_condition; SELECT * FROM t2 "match_condition";
Namen der Variablen
Wenn Sie Sitzungsvariablen oder Bindungsvariablen mit dem Namen ASOF oder MATCH_CONDITION verwenden und die Namen beim Erstellen nicht in Anführungszeichen gesetzt wurden, müssen sie umbenannt oder entfernt werden.
Sie können zum Beispiel keine Sitzungsvariable mit dem Namen
asof
mehr festlegen:set asof ='2024/01/15';
001003 (42000): SQL compilation error: syntax error line 1 at position 4 unexpected 'asof'.
Sie können jedoch eine Variable festlegen, die ausdrücklich in doppelte Anführungszeichen gesetzt ist und den Namen
"asof"
oder"ASOF"
trägt:set "asof" ='2024/01/15';
+----------------------------------+ | status | |----------------------------------| | Statement executed successfully. | +----------------------------------+
Die gleichen Regeln gelten für Bindungsvariablen wie
:asof
und:match_condition
.
Ref.: 1138