Exists - funzione di script
Exists() determina se un valore di campo specifico è già stato caricato nel campo nello script di caricamento. La funzione restituisce TRUE o FALSE, quindi può essere utilizzata nella clausola where di un'istruzione LOAD o una funzione IF.
Sintassi:
Exists(field_name [, expr] )
Restituisce il tipo di dati: Booleano
Argomenti:
Argomento | Descrizione |
---|---|
field_name |
Il nome del campo in cui si desidera ricercare un valore. È possibile utilizzare un nome di campo esplicito senza virgolette. Il campo deve essere già stato caricato dallo script. Ciò significa che non si può fare riferimento a un campo caricato in una clausola posta più avanti nello script. |
expr |
Il valore di cui si desidera controllare l'esistenza. È possibile utilizzare un valore esplicito o un'espressione che si riferisce a uno o più campi nell'attuale istruzione LOAD. Nota informaticaNon è possibile fare riferimento a campi non inclusi nell'istruzione LOAD corrente.
Questo argomento è opzionale. Se lo si omette, la funzione controllerà se il valore di field_name nel record corrente esiste già. |
Esempio 1:
Exists (Employee)
restituisce -1 (True) se il valore di campo Employee nel record attuale esiste già in uno qualsiasi dei record letti in precedenza contenenti tale campo.
Esempio 2:
Exists(Employee, 'Bill')
restituisce -1 (True) se il valore di campo 'Bill' viene trovato nel contenuto attuale del campo Employee.
Le istruzioni Exists (Employee, Employee) e Exists (Employee) sono equivalenti.
Esempio 3:
il risultato è una tabella denominata Citizens nel modello dati, che può essere visualizzata come grafico tabellare utilizzando le dimensioni Employee e Address.
La clausola where: where Exists (Employee), significa che nella nuova tabella vengono caricati solo i nomi della tabella Citizens che sono anche presenti in Employees. Per evitare confusione, l'istruzione Drop rimuove la tabella temporanea Employees per evitare confusioni.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Esempio 4:
la clausola where include not: where not Exists (Employee).
Ciò significa che solo i nomi presenti nella tabella Citizens che non sono inclusi in Employees vengono caricati nella nuova tabella.
Notare che sono presenti due valori per Lucy nella tabella Citizens, ma solo uno è incluso nella tabella dei risultati. Quando si carica la prima riga con il valore Lucy, questo viene incluso nel campo Employee. Pertanto, quando viene controllata la seconda riga, il valore risulta già esistente.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Esempio 5:
il seguente esempio mostra come caricare tutti i valori.
Per ottenere tutti i valori per Lucy, sono stati modificati due elementi:
-
Un caricamento precedente sulla Employees è stato inserito, quindi il nome di Employee è stato modificato a Name.
Load Employee As Name;
-
La condizione Where in Citizens è stata modificata a:
not Exists (Name, Employee).
Questa operazione crea campi per Name e Employee. Quando viene controllata la seconda riga per Lucy, non esiste ancora in Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Dati utilizzati nell'esempio: