2016-11-18 55 views
1

我有一个列名为type的kdb表,并希望通过给定类型来选择数据。这就像:kdb/q,保留字为列名

select from table where type=giving_type 

它发出的一个错误:'type,因为类型是在Q的保留字。

那么该怎么做?

+2

功能选择,或通过查找字典语法('表[\'giving_type]')是你唯一的选择。尽量避免使用关键字作为列名,真的是 –

+0

虽然在技术上可能做到这一点(上面和下面提供的解决方案),但行为是未定义的。其他内置功能可能会失败。强烈建议选择另一个列名。 – user2242865

+1

顺便说一下.Q.id会为你修复这些列名http://code.kx.com/wiki/DotQ/DotQDotid – Chromozorz

回答

2

你可以使用一个功能选择:

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

一般来说,你应该避免使用KDB保留字,如“类型”作为列名。

在这种特殊情况下,表中确实有“type”作为列名,功能选择是解决方案。

你可以找到通过解析功能的选择查询的功能形式:

parse "select from table where type=giving_type"