2013-04-02 3 views
5

Ich muss eine Datenbank abfragen, die Namen von Unternehmen enthält. Ich habe eine Liste von ungefähr 50 Namen, für die ich die Daten bekommen muss. Aber ich bin nicht in der Lage, eine Abfrage mit dem Befehl in als Leerzeichen in einem Namen zu schreiben, die nicht erkannt werden. exLeerzeichen in Symbolliteralen

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

Dies gibt mir einen Fehler, da 'Cola' nicht erkannt wird. Gibt es eine Möglichkeit, eine solche Abfrage zu schreiben?

Antwort

3

Die Räume zwischen den Saiten der Dolmetscher führen zu verwechseln. Das `$() wandelt die Liste der Zeichen in Symbole um.

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 

Sie auch von Gehäuse sein wollen kann vorsichtig und verwenden entweder konsequent Groß- oder Klein anderes, das unerwartet leer Ergebnissen führen würde:

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

Vielen Dank, das hat funktioniert – Mancunia89

0

Sie müssen so etwas wie die folgenden Funktionen ausführen:

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

Danke für die Anregung habe ich versucht, diese mit, es doesn Geben Sie keinen Fehler, aber die Abfrage gibt keine Ergebnisse zurück, während ich weiß, dass Einträge in der Datenbank vorhanden sind. – Mancunia89

+0

welcher Typ ist die Namensspalte? – user1895961