Nel()In SQL c'è un comando per in (..) dove troverà ogni riga in una tabella che la colonna specificata ha un valore IN nell'istruzione in (...). È bello trovare rapidamente gli elementi in una lista. Sarebbe bello se potessimo farlo in JSL.
EX:
dt << Select Where( in(col, list) );
al contrario di:
dt << Select Where( :col == list[1] | :col == list[2] | ... )
Lo svantaggio per il secondo metodo è ovvio che è necessario conoscere la lunghezza dell'elenco.
Riesco a pensare a diversi work around con loop for, ma la maggior parte di questi si troveranno a fronteggiare problemi di prestazioni in grandi set di dati.
Basta aggiungere questo alla mia lista dei desideri.
Ri: In ()<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Grazie! Dopo pochi minuti ho finalmente capito. Invece di cercare nella colonna i valori nell'elenco, stiamo cercando nell'elenco il valore trovato in ogni cella.
Ri: In ()Anche questa versione più semplice della stessa idea funziona ( Seleziona dove apparentemente considera [1] come True e [] come False):
dt << select where(Loc(list, :col));
Ri: In ()Contains () può fare ciò che desideri.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
list = {"JANE", "ALICE", "MICHAEL", "ELIZABETH"};
col = Column(dt, "name");
dt << select where(Contains(list, col[]));
Ri: In ()
dt<<SELECT where="">0);
</SELECT>
Questo dovrebbe fare quello che vuoi