Символ пробела в символьных литералах

Мне нужно запросить базу данных, содержащую названия компаний. У меня есть список из 50 имен, для которых я должен получить данные. Но я не могу написать запрос, используя команду in, так как в имени есть пробелы, которые не распознаются. бывший

select from sales where name in (`Coca Cola, `Pepsi)

Это дает мне ошибку, поскольку «Кола» не распознается. Есть ли способ написать такой запрос?


kdb
person Mancunia89    schedule 02.04.2013    source источник


Ответы (2)


Пробелы между строками запутывают интерпретатор. `$() приводит список символов к символам.

q)t:([] a:1 2 3; name:`$("coca cola";"pepsi";"milk"))

q)select from t where name in `$("coca cola";"pepsi")
a name
-----------
1 coca cola
2 pepsi

Вы также можете быть осторожны с регистром и использовать последовательно нижний или верхний регистр, иначе это может привести к неожиданным пустым результатам:

q)select from t where name in `$("Coca Cola";"Pepsi")
a name
------

q)select from t where upper[name] in upper `$("Coca Cola";"Pepsi")
a name
-----------
1 coca cola
2 pepsi
person John at TimeStored    schedule 02.04.2013

Вам нужно сделать что-то вроде следующего:

select from sales where name in `$("Coca Cola";"Pepsi")
person user1895961    schedule 02.04.2013
comment
Спасибо за предложение, я попытался использовать это, это не дает никаких ошибок, но запрос возвращает нулевые результаты, тогда как я знаю, что в базе данных есть записи. - person Mancunia89; 02.04.2013
comment
какой тип столбца имени? - person user1895961; 02.04.2013