2016-11-30 2 views
0

Zum Beispiel würde ich gerne laufen:Gibt es eine Möglichkeit, eine einzelne PSQL-Aggregatfunktion auszuführen, ohne eine Datenbanktabelle zu treffen?

REGEXP_REPLACE("What's My Name?", "[^a-z0-9_\-]", "-"); 

und einfach sehen, was es gibt, sondern eine Suche gegen eine DB Tabelle zu tun. Ich versuchte es in der CLI zu laufen und bekam

ERROR: syntax error at or near "REGEXP_REPLACE" 
LINE 1: REGEXP_REPLACE("What's My Name?", "[^a-z0-9_\-]", "-") 

(Ich versuche Fachgrund- zu sein Ich möchte in der Lage sein, dies auch für andere PSQL Aggregatfunktionen zu verwenden.)

Antwort

2

Denken Sie daran, dies ist SQL, also ist jede Ausgabe, die Sie erhalten, eine Relation. Um das Ergebnis einer Funktion zu berechnen, müssen Sie SELECT ausführen, um den Wert der Funktion abzurufen.

Leider benötigt in vielen DBs SELECT eine Tabelle. In Oracle Land, gibt es dual, um dieses Problem zu umgehen:

SELECT REGEXP_REPLACE('What''s My Name?', '[^a-z0-9_\-]', '-') FROM dual; 

PostgreSQL, jedoch können Sie eine SELECT Abfrage auszuführen, ohne eine Tabelle angeben zu müssen:

SELECT REGEXP_REPLACE('What''s My Name?', '[^a-z0-9_\-]', '-'); 

Beachten Sie, dass die Zeichenfolge Zitat in SQL ist ', nicht ". PostgreSQL verwendet doppelte Anführungszeichen, um Bezeichner zu zitieren.

Randnotiz: Nicht jede Funktion ist ein Aggregat. Ein Aggregat ist eine Funktion, die mehrere Werte zu einem einzelnen Ausgabewert kombiniert. ist nur eine normale string function.

+0

Vielen Dank! Ich komme aus Rails Land, und sie tun ihr Bestes, um so wenig SQL wie möglich zu machen, also bin ich ziemlich noob-ish, wenn es darum geht, die 'psql'-Syntax zu verwenden. Das geht genau so, wie ich es wollte. – Rockster160

2

Gibt es eine Möglichkeit, eine einzelne PSQL-Aggregatfunktion auszuführen, ohne eine Datenbanktabelle zu treffen?

Ja, in PostgreSQL können Sie eine SELECT Anweisung ohne FROM Teil überhaupt schreiben.

Verwandte Themen