2013-04-02 2 views
5

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

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

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

ответ

3

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

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 
+0

Большое спасибо, это сработало – Mancunia89

0

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

select from sales where name in `$("Coca Cola";"Pepsi") 
+0

Спасибо за предложение, я попытался с помощью этого, Безразлично 't дать любую ошибку, но запрос возвращает нулевые результаты, тогда как я знаю, что в базе данных есть записи. – Mancunia89

+0

Какой тип столбца имени? – user1895961