KDB从

2017-05-24 39 views
0

选择正则表达式有没有办法使用正则表达式来定义select语句中的所有列。像KDB从

select myColumnPrefix* from myTable 

这将显示所有以myColumnPrefix开头的列?

回答

3

不使用qSQL,但是您可以使用正则表达式来获取列名称,然后使用功能选择。例如,

c: cols[myTable] where cols[myTable] like "myColumnPrefix*"; 
?[myTable;();0b;c!c] 

或者作为一个内胆,

?[myTable;();0b;{[email protected]:where x like "myColumnPrefix*"} cols myTable] 
1

如果你真的想使用QSQL(不建议 - 难读/维护),那么你可以在@ostewart建议扩大了什么:

定义表:

q)t:([]foo1:1 2;foo2:3 4;foo3:5 6;bar1:1 2;bar2:3 4;bar3:5 6) 
q)t 
foo1 foo2 foo3 bar1 bar2 bar3 
----------------------------- 
1 3 5 1 3 5 
2 4 6 2 4 6 

的兴趣提取列,并准备为字符串:

q)c:", " sv string cols[t] where cols[t] like "foo*"; 
q)c 
"foo1, foo2, foo3" 

联接列来选择查询和值表达式:

q)value "select ",c," from t" 
foo1 foo2 foo3 
-------------- 
1 3 5 
2 4 6