2017-06-07 11 views
0
func:{[query] value query}; 

クエリは私の機能の一部です。私は、(値のクエリ)から削除xxx、yyyyといくつかの操作のようないくつかを追加しました。 なぜ私は値 "クエリ"を使用しない場合、関数doesntは動作します。それはテーブルを見つけることができないと言いました。 私は関数内で値のクエリを使用する必要があり、クエリはパラメータです。 「タブから選択」を関数に渡す必要があります。kdbの関数内の文字列クエリ

私の質問は次のとおりです。フィルタが文字列でも送信するにはどうすればいいですか?

func["select from tab where a="abc""] <<< this does not work 

文字列の中に文字列を作成するにはどうすればよいですか?

はまた、私は

func["select from tab where date = max date"] it did not work due to length error 
but func["100#select from tab where date = max date"] it works ? 

をすればすべてのヘルプはわからない理由を歓迎です!

全体の機能はあなたがバックスラッシュhttp://code.kx.com/wiki/Reference/BackSlash#escape

func["select from tab where a like \"abc\""] 

編集使用して引用符をエスケープすることができます

getTable:{[query]loadHDB[];.Q.view date where date < .z.D-30;tab:(delete xxxx,yyyyy,sub,ID,subID,tID,subTID,text,gID from((value query)));remove[];update {";"sv @[s;where (s:";"vs x) like "cId=*";:;enlist""]}each eData from (update {";"sv @[s;where (s:";"vs x) like "AId=*";:;enlist""]}each eData from tab)}; 


remove:{[]delete tab from `.}; 
loadHDB:{[]value "\\l /hdb}; 

答えて

3

です:タブは、HDBテーブルの場合、この長さのエラーが指す可能性が

を列の長さの問題(100#は避けています)。以下は何を返しますか?

q)checkPartition:{[dt] a!{c!{count get x} each ` sv' x,/:c:({x where not x like "*#"} key[x])except `.d}each a:(` sv' d,/:key[d:hsym `$string dt])}; 
q)check:checkPartition last date 
q)(where{1<count distinct value x}each check)#check 
+0

nice it worked!しかし、なぜ私が長さのエラーを与えた関数でクエリを行ったのか分かりません。クエリからいくつのレコードが必要かを指定しなければ、エラーが発生します。 – Terry

+0

タブがHDBテーブルの場合、この長さエラーはカラム長の問題(100#は避けている)を指している可能性があります。何が次の(移動されたコードを編集された答えに) –

+0

返すチェックエラー – Terry

1

私は-3!結果を印刷するには-1を指定します。コンソールから実行するとクエリがどのように表示されるか分かっている場合は、文字列を作成した後に-1を使用して文字列を表示します。クエリがコンソールでどのように実行されるかを表示する必要があります。

q)stst:-3! 
    q)"select max age by user from tab where col1 like ",stst"Hello" 
    "select max age by user from tab where col1 like \"Hello\"" 
    q)/then to view how it will be executed, use -1 
    q)-1"select max age by user from tab where col1 like ",stst"Hello"; 
    select max age by user from tab where col1 like "Hello" 
    q)/looks good 
+0

コンソールのサイズに注意してください:) q)システム "c 50 10" q)-3!"こんにちは" "\" Hell .. –

関連する問題