比方说,我有一个数据类型为字符数组的表的列。我想传递一个函数select where子句,其中列在给定字符串的列表中。但是,我不能简单地使用(in; `col; myList)
的原因。相反,我需要做的相当于:如何将“像每个”转换为功能表单?
max col like/: myList
它有效地给出相同的结果。不过,我试图把这个功能形式
(max; (like/:; `col; myList))
而且我得到一个类型错误。关于如何使这项工作的任何想法?
比方说,我有一个数据类型为字符数组的表的列。我想传递一个函数select where子句,其中列在给定字符串的列表中。但是,我不能简单地使用(in; `col; myList)
的原因。相反,我需要做的相当于:如何将“像每个”转换为功能表单?
max col like/: myList
它有效地给出相同的结果。不过,我试图把这个功能形式
(max; (like/:; `col; myList))
而且我得到一个类型错误。关于如何使这项工作的任何想法?
一个好的技巧处理这个问题上要功能化的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)
这样的功能化语句很快就会变得非常难读!
希望帮助!
它应该是:(max;((/:;like);`col;`mylist))
(any; ((/:;like); `col; enlist,myList))