Exists - funzione di script
Exists() determina se un valore di campo specifico è già stato caricato nel campo nello script di caricamento dei dati. La funzione restituisce TRUE o FALSE, quindi può essere utilizzata nella clausola where di un'istruzione LOAD o un'istruzione IF.
Syntax:
Exists(field_name [, expr])
Return data type: Booleano
Arguments:
Argomento | Descrizione |
---|---|
field_name |
Nome del campo in cui si desidera cercare un valore. È possibile utilizzare un nome di campo esplicito senza virgolette. Il campo deve già essere caricato dallo script. Ciò significa che non è possibile fare riferimento a un campo caricato in una clausola che si trova più in basso nello script. |
expr |
Valore del quale si vuole verificare l'esistenza. È possibile utilizzare un valore esplicito o un'espressione che fa riferimento a uno o più campi nell'istruzione LOAD corrente. Nota informaticaNon è possibile fare riferimento a campi non inclusi nell'istruzione LOAD corrente.
Questo argomento è facoltativo. Se viene omesso, la funzione verificherà se il valore di field_name nel record corrente è già esistente. |
Dati utilizzati nell'esempio:
Example:
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.
Le istruzioni Exists (Employee, Employee) e Exists (Employee) sono equivalenti.
Example:
Exists(Employee, 'Bill')
Restituisce -1 (True) se il valore di campo 'Bill' viene trovato nel contenuto attuale del campo Employee.
Example:
Viene generata una tabella che può essere usata in una visualizzazione di tabella con 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 presenti anche in Employees. L'istruzione Drop rimuove la tabella Employees per evitare confusione.
Employee | Address |
Bill | New York |
John | Miami |
Steve | Chicago |
Example:
La clausola where include not: where not Exists (Employee, Name).
Ciò significa che nella nuova tabella vengono caricati solo i nomi della tabella Citizens che non sono presenti in Employees.
Si noti che sono presenti due valori per Lucy nella tabella Citizens, ma solo uno è incluso nella tabella risultante. Quando si carica la prima riga, il valore viene incluso nella tabella di simboli Employee. Quindi, quando viene controllata la seconda riga, il valore è già esistente.
L'esempio successivo mostra come caricare tutti i valori.
Employee | Indirizzo |
---|---|
Mary | London |
Lucy | Madrid |
Example:
Per ottenere tutti i valori per Lucy è necessario effettuare due modifiche:
-
Aggiungere un'istruzione preceding LOAD a Employees in cui Employee viene rinominato in Name.
Load Employee As Name, ID, Salary;
-
Modificare la condizione Where in Citizens in:
not Exists (Name, Employee).
Verranno così create tabelle di simboli diverse per Name e Employee. Quando viene controllata la seconda riga per Lucy, il valore è ancora inesistente in Name.
Employee | Indirizzo |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |