Zum Inhalt springen

TRY-Ausdruck

Der Ausdruck TRY stellt sicher, dass Fehler, die durch die Eingabezeilen im untergeordneten (skalaren) Ausdruck verursacht werden, für diese Zeilen zu NULL führen, statt die Abfrage mit einem Fehler abzubrechen.

Der Ausdruck TRY ist vom Ausdruck TRY_CAST inspiriert.

Beispiele

Die folgenden Aufrufe liefern Fehler, wenn sie ohne den Ausdruck TRY ausgeführt werden. Werden sie in einen TRY-Ausdruck gewrappt, liefern sie NULL:

Typumwandlung

Ohne TRY

SELECT 'abc'::INTEGER;
Terminal window
Conversion Error:
Could not convert string 'abc' to INT32

Mit TRY

SELECT TRY('abc'::INTEGER);
NULL

Logarithmus von Null

Ohne TRY

SELECT ln(0);
Terminal window
Out of Range Error:
cannot take logarithm of zero

Mit TRY

SELECT TRY(ln(0));
NULL

Typumwandlung mehrerer Zeilen

Ohne TRY

WITH cte AS (FROM (VALUES ('123'), ('test'), ('235')) t(a))
SELECT a::INTEGER AS x FROM cte;
Terminal window
Conversion Error:
Could not convert string 'test' to INT32

Mit TRY

WITH cte AS (FROM (VALUES ('123'), ('test'), ('235')) t(a))
SELECT TRY(a::INTEGER) AS x FROM cte;
x
123
NULL
235

Einschränkungen

TRY kann nicht zusammen mit einer volatilen Funktion, einer Aggregatfunktion oder einer skalaren Unterabfrage verwendet werden. Zum Beispiel:

SELECT TRY(random())
Terminal window
Binder Error:
TRY can not be used in combination with a volatile function