Ana içeriğe geç

Exists - kod fonksiyonu

Exists(), veri kod dosyasında alana daha önce belirli bir alan değerinin yüklenip yüklenmediğini belirler. Fonksiyon TRUE ya da FALSE sonucunu döndürdüğünden, bir LOAD deyiminin veya bir IF deyiminin where cümlesinde kullanılabilir.

Not: Bir alan değerinin yüklenip yüklenmediğini belirlemek için Not Exists() işlevini de kullanabilirsiniz, ancak Not Exists() işlevini where cümlesinde kullanıyorsanız dikkatli olmanız önerilir. Exists() işlevi hem önceden yüklenen tabloları hem de geçerli tablodaki önceden yüklenen değerleri test eder. Bu nedenle yalnızca ilk oluşum yüklenir. İkinci oluşumla karşılaşıldığında değer zaten yüklenmiştir. Daha fazla bilgi için örneklere bakın.

Syntax:  

Exists(field_name [, expr])

Return data type: Boole

Arguments:  

Bağımsız Değişkenler
Bağımsız Değişken Açıklama
field_name

Değer aramak istediğiniz alanın adı. Tırnak işaretleri olmadan belirtik bir alan adı kullanabilirsiniz.

Alan, komut dosyası tarafından önceden yüklenmiş olmalıdır. Başka bir deyişle, komut dosyasının daha derinindeki bir cümlede yüklenen bir alanı referans alamazsınız.

expr

Varsa, denetlemek istediğiniz değer. Geçerli load deyiminde bir veya birkaç alanı referans alan bir ifade veya belirtik bir değer kullanabilirsiniz.

Not: Geçerli load deyiminde yer almayan alanları referans alamazsınız.

Bu bağımsız değişken isteğe bağlıdır. Bunu atarsanız işlev, geçerli kayıttaki field_name değerinin önceden var olup olmadığını denetler.

Örnekte kullanılan veriler:

LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|');   Drop Tables Employees;

Example:  

Exists (Employee)

Geçerli kayıttaki Employee alanının değeri bu alanı içeren daha önce okunmuş herhangi bir kayıtta zaten mevcutsa -1 (True) sonucunu döndürür.

Exists (Employee, Employee) ve Exists (Employee) deyimleri eşdeğerdir.

Example:  

Exists(Employee, 'Bill')

Employee alanının geçerli içeriğinde 'Bill' alan değeri bulunursa -1 (True) sonucunu döndürür.

Example:  

Employees:
LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where Exists (Employee);   Drop Tables Employees;

 

Bu da, Employee ve Address boyutlarını kullanarak tablo görselleştirmesinde kullanabileceğiniz bir tabloyla sonuçlanır.

where cümlesi: where Exists (Employee), Citizens tablosundan gelen adlardan yalnızca Employees içinde de bulunan adların yeni tabloya yüklenmesi anlamını taşır. Drop deyimi, karışıklığı önlemek için Employees tablosunu kaldırır.

Sonuçlar
   
Employee Address
Bill New York
John Miami
Steve Chicago

Example:  

Employees: Load * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami22222222223
+0 ] (delimiter is '|') where not Exists (Employee);   Drop Tables Employees;

 

where cümlesi, not: where not Exists (Employee, Name) ifadesini içerir.

Başka bir deyişle, yalnızca Employees içinde olmayan Citizens tablosundaki adlar yeni tabloya yüklenir.

Citizens tablosunda Lucy için iki değer olduğunu, ancak sonuç tablosunda yalnızca bir değer yer aldığını unutmayın. Birinci satırı yüklediğinizde değer, Employee simge tablosuna dahil edilir. Bu nedenle, ikinci satır denetlendiğinde şimdi değer vardır.

Sonraki örnekte, tüm değerlerin nasıl yükleneceği gösterilmektedir.

Sonuçlar
Employee Address
Mary London
Lucy Madrid

Example:  

Employees: Load Employee As Name, ID, Salary; LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where not Exists (Name, Employee);   Drop Tables Employees;

 

Lucy için tüm değerleri alabilmek istiyorsanız iki şeyi değiştirmeniz gerekir:

  • Employees öğesine bir öncelikli load ekleyin; burada Employee öğesini Name olarak yeniden adlandırırsınız.

    Load Employee As Name, ID, Salary;

  • Citizens içinde Where koşulunu şuna değiştirin:

    not Exists (Name, Employee).

Böylece Name ve Employee için farklı simge tabloları oluşturulur. Lucy için ikinci satır denetlendiğinde, Name içinde halen yoktur.

Sonuçlar
Employee Address
Mary London
Lucy Madrid
Lucy Paris