2016-11-18 7 views
1

Ich habe eine kdb-Tabelle mit Spaltenname type und möchte Daten durch einen gebenden Typ auswählen. Es ist wie:kdb/q, reserviertes Wort als Spaltenname

select from table where type=giving_type 

es einen Fehler von dem Fachmann: 'type, weil Art ein reserviertes Wort in q.

Dann wie geht das?

+2

funktionelle wählen oder Lookup über Wörterbuch Syntax ('table [\' giving_type] ') sind Ihre einzige Wahl. Am besten vermeiden Sie die Verwendung von Schlüsselwörtern als Spaltennamen, wirklich –

+0

Während es technisch möglich ist, dies zu tun (Lösungen oben und unten zur Verfügung gestellt), ist das Verhalten undefiniert. Andere integrierte Funktionen können fehlschlagen. Es wird dringend empfohlen, einen anderen Spaltennamen zu wählen. – user2242865

+1

By the way .Q.id wird diese Spaltennamen für Sie reparieren http://code.kx.com/wiki/DotQ/DotQDotid – Chromozorz

Antwort

2

könnten Sie eine funktionelle wählen verwenden:

?[`table;enlist (=;enlist `giving_type;`type);0b;()] 
0

Sie sollten in der Regel vermeiden KDB reservierten Wörter wie „Art“ als Spaltennamen.

In diesem speziellen Fall, in dem die Tabelle den Spaltennamen "type" enthält, ist die funktionale Auswahl die Lösung.

Sie können die funktionale Form einer Auswahlabfrage über die Parsing-Funktion finden:

parse "select from table where type=giving_type"

Verwandte Themen