В этом link приведен пример включения динамического параметра. d
в запросе выборки КДБ:Конкатенация строк KDB с символьным списком для динамического запроса
h: hopen`:myhost01:8012 // open connection
d: 2016.02.15 // define date var
symList: `GBPUSD`EURUSD
h raze "select from MarketDepth where date=", string d, ", sym in `GBPUSD`EURUSD" // run query with parameter d
Здесь d
имеет тип date
и легко струнной СЦЕПИТЬ для того, чтобы сформировать динамический запрос.
Если я хочу добавить symList
как динамический параметр, а также путем преобразования в строку:
raze "select from MarketDepth where date=", string d, ", sym in ", string symList
Сцепленная строка становится: select from MarketDepth where date=2016.02.15, sym in GBPUSDEURUSD
, другими словами, конкатенация теряет кавычку поэтому запрос не выполняется , Как я могу это решить?
p.S: Я знаю о functional querying, но после провала в течение 2 часов я отказался от этого.
Спасибо, я потратил часы на функциональный выбор, поскольку это кажется правильным способом сделать это. Однако обработанное дерево вызывает ошибку при попытке выполнить запрос. Мне удалось запустить его для более простых таблиц, но когда один из условных столбцов имеет символ типа, он как-то не работает. – Rhubarb
@ Zhubarb: выполняет ли функциональный выбор, который я показал, не работает? –
Я его не тестировал, но этого я не смог заставить работать. Таблица: 't: ([] col1: 8?' A'b; col2: til 8; col3: 8? 9.) '. И когда я разбираю это: 'select from t, где col1 =' a, col2 <4', я получаю '? [' T; enlist ((=; 'col1; заручиться' a); (<; 'col2; 4)); 0b;()] ', что не дает ожидаемого результата (т. Е. Дает строку, где col1 - b). (Извините, backticks mess форматирование вверх) – Rhubarb