KDB +使用或与where和like一起使用

时间:2018-01-05 19:55:35

标签: kdb q-lang

我正在尝试从column_1和column_2获取apptype CASPER和FOO的信息。 当我搜索一个或另一个apptype时,脚本工作正常。 但是,当使用'或'语句在一个输出中包含两个apptypes时,我收到一个错误。 我认为这只是'kdb或'声明。

我没有KDB参考手册。

raze{[tradedate] 

setdate tradedate;

`rootordid`clordid xasc

select from( 
        (select column_1, apptype, column_3, from orders where apptype like "CASPER" or "FOO")
         )}each .utl.get_bdts[2017.12.04;2017.12.05]

2 个答案:

答案 0 :(得分:4)

重写or语句如下:

select column_1, apptype, column_3, from orders where (apptype like "CASPER") or apptype like "FOO"

括号周围(类似" CASPER")确保不会因为q从右到左读取子句而抛出长度错误。

答案 1 :(得分:0)

您可以使用anyeach right /:来包含多个字词而不是MyEnum<False>

or

这样做的好处是可以很容易地扩展超过2个术语。

在上面的示例中,首先评估select column_1, apptype, column_3 from orders where any apptype like/:("CASPER";"FOO") ,导致"CASPER" or "FOO"错误。

示例:

'length