Heim >Datenbank >MySQL-Tutorial >Wie kann ich Aliase in der WHERE-Klausel von PostgreSQL korrekt verwenden?

Wie kann ich Aliase in der WHERE-Klausel von PostgreSQL korrekt verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-28 06:10:10596Durchsuche

How Can I Correctly Use Aliases in PostgreSQL's WHERE Clause?

Referenzieren auf Aliase in WHERE-Klauseln in Postgres

In PostgreSQL kann das Verweisen auf Aliase in der WHERE-Klausel zu Fehlern wie „Spalte funktioniert nicht“ führen existieren." Dies liegt daran, dass die WHERE-Klausel ausgeführt wird, bevor Aliase in der SELECT-Klausel definiert werden.

Warum das nicht möglich ist

In SQL werden Klauseln in einer bestimmten Reihenfolge ausgeführt: WHERE , FROM, GROUP BY, HAVING, SELECT, ORDER BY. Das bedeutet, dass Postgres, wenn es auf die WHERE-Klausel stößt, noch keine Aliase kennt, die Sie in der SELECT-Klausel definiert haben.

Lösung

Um dieses Problem zu beheben, Sie müssen Ihre Abfrage neu schreiben, um die Verwendung von Aliasen in der WHERE-Klausel zu vermeiden. Geben Sie stattdessen direkt den zu vergleichenden Ausdruck an. Die folgende Abfrage wählt beispielsweise korrekt Zeilen aus, in denen das zweite bis sechste Zeichen der Spalte „pk“, umgewandelt als Ganzzahl, größer als 90 ist:

SELECT
    SUBSTRING(pk, 6, 2)::INT AS _year
FROM
    listing
WHERE
    SUBSTRING(pk, 6, 2)::INT > 90

Hinweis: Dies Die Einschränkung gilt nur für Aliase, die in der SELECT-Klausel definiert sind. Aliase, die in anderen Klauseln wie FROM oder JOIN definiert sind, können in nachfolgenden Klauseln verwendet werden.

Das obige ist der detaillierte Inhalt vonWie kann ich Aliase in der WHERE-Klausel von PostgreSQL korrekt verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn