我遇到了一個煩人的問題。我們在kdb +數據庫中獲得了股票代碼AGN-A,但是如果這個符號在符號列表中查詢,似乎幾乎不可能。以下查詢根本不起作用:如何處理KDB中包含減號的符號?
`$"A-o" in (`$"A-o";`R)
任何想法如何解決這個問題?
我遇到了一個煩人的問題。我們在kdb +數據庫中獲得了股票代碼AGN-A,但是如果這個符號在符號列表中查詢,似乎幾乎不可能。以下查詢根本不起作用:如何處理KDB中包含減號的符號?
`$"A-o" in (`$"A-o";`R)
任何想法如何解決這個問題?
不起作用的原因是因爲您在鑄造前的比較。你需要轉換,然後再進行比較:
q)(`$"A-o") in (`$"A-o";`R)
1b
嘗試把括號圍繞左參數中,如:
(`$"A-o") in (`$"A-o";`R)
所以,在一個表中,請嘗試:
t:([] sym:(`$"A-o";`R;`IBM); col2:1 2 3)
select from t where sym = `$"A-o"
最初的sym cast`$正在應用於整行,而不僅僅是「Ao」字符串。 q是左邊的。 括號是你的答案。
q)`$"A-o" in (`$"A-o";`R)
'type
[0] <>:0: `$"A-o" in (`$"A-o";`R)
^
q)(`$"A-o") in (`$"A-o";`R)
1b
q)
其他答案涵蓋了如何使用圓括號修復執行順序。然而,它是可以應對不相似的符號的符號「 - 」通過使用函數.Q.id
吹掃壞字符,因此,無需進行轉換:
q).Q.id each (`$"A-o";`R)
`Ao`R
簡化上述例子中,以:
q)`Ao in .Q.id each (`$"A-o";`R)
1b
一般來說,是的,當你的符號中有字符時可能會很尷尬,但是如果你像在例子中那樣處理鑄造字符串應該沒問題 – terrylynch