2013-04-02 2 views
5

J'ai besoin d'interroger une base de données qui contient des noms de sociétés. J'ai une liste d'environ 50 noms, pour lesquels je dois obtenir les données. Mais je suis incapable d'écrire une requête en utilisant la commande car il y a des espaces dans un nom qui ne sont pas reconnus. exCaractère d'espace dans les littéraux de symboles

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

Ceci me donne une erreur car 'Cola' n'est pas reconnu. Existe-t-il un moyen d'écrire une telle requête?

Répondre

3

Les espaces entre les chaînes que l'interpréteur de se confondre. Le `$() jette la liste des caractères aux symboles.

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 

Vous pouvez également faire attention boîtier et utiliser soit le cas toujours inférieur ou supérieur d'autre qui entraînerait des résultats vides inattendus:

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

Merci beaucoup, cela a fonctionné – Mancunia89

0

Vous devez faire quelque chose comme ce qui suit:

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

Merci pour la suggestion, j'ai essayé d'utiliser cela, il doesn Ne pas donner d'erreur, mais la requête retourne des résultats zéro, alors que je sais qu'il y a des entrées dans la base de données. – Mancunia89

+0

De quel type est la colonne de nom? – user1895961

Questions connexes