2017-06-20 2 views
1

Comment sélectionner des enregistrements spécifiques si je ne place qu'un seul symbole dans le filtre?Comment puis-je interroger plusieurs symboles dans un champ de kdb?

Eg: 
tab:([]a:1 2 3;b:(`abc`bde;`efg`rte;`dqw`gds)) 
1 (`abc`bde) 
2 (`efg`rte) 
3 (`dqw`gds) 

Je veux filtrer abc donc que le retour:

1 (`abc`bde) 

select from tab where b=`abc ne fonctionnera pas.

+0

double possible de [? Comment interroger la table KDB où une colonne est une liste] (https://stackoverflow.com/questions/40090753/how-to-query -kdb-table-where-one-column-is-a-list) –

Répondre

4

Vous pouvez utiliser le droit de chaque /: adverbe avec la fonction in:

q)select from tab where `abc in/: b 
a b  
--------- 
1 abc bde 

Chaque droit est nécessaire ici parce que les colonnes de table sont des vecteurs; donc in fonctionne sur une liste imbriquée des symboles. L'appel exec ci-dessous montre plus clairement:

q)0N!(exec b from tab); 
(`abc`bde;`efg`rte;`dqw`gds)