2017-05-26 1 views
2

私は、データ型が文字配列であるテーブルの列を持っているとします。私は関数select select節を渡したいと思います。where節は与えられた文字列のリストにあります。しかし、私は単純に(in; `col; myList)を使用することはできません。代わりに、私は同等の結果を効果的に与える必要があります:"like each"を機能的なフォームに変換するにはどうすればよいですか?

しかし、私は機能的な形でこれを入れようとしました

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

そして私はタイプエラーが発生しています。どのように私はこの仕事をすることができるかについての任意のアイデア?

答えて

2

素敵なトリックあなたが官能したいSELECT文の文字列にparseを使用しているこの問題に対処するとき。たとえば、次のように

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

的または特異的にあなたのケースでは、あなたが結果リストの3番目の要素をしたい(句):

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)) 
関連する問題