2017-05-26 29 views
2

比方说,我有一个数据类型为字符数组的表的列。我想传递一个函数select where子句,其中列在给定字符串的列表中。但是,我不能简单地使用(in; `col; myList)的原因。相反,我需要做的相当于:如何将“像每个”转换为功能表单?

max col like/: myList 

它有效地给出相同的结果。不过,我试图把这个功能形式

(max; (like/:; `col; myList)) 

而且我得到一个类型错误。关于如何使这项工作的任何想法?

回答

2

一个好的技巧处理这个问题上要功能化的SELECT语句的字符串使用parse时。例如:

q)parse"select from t where max col like/: myList" 
? 
`t 
,,(max;((/:;like);`col;`myList)) 
0b 
() 

或者特别是在你的情况你想要的结果列表的第三个元素(where子句):

q)(parse"select from t where max col like/: myList")2 
max ((/:;like);`col;`myList) 

我甚至想用您的实际代码这种模式可以是好主意,因为像max ((/:;like);`col;`myList)这样的功能化语句很快就会变得非常难读!

希望帮助!

1

它应该是:(max;((/:;like);`col;`mylist))

1
(any; ((/:;like); `col; enlist,myList))