computed by (alanlardan biri bos ise)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

computed by (alanlardan biri bos ise)

Mesaj gönderen ikra »

hocalarim forumda aradim fakat bana uygun bir sey bulamadim.

firebird 1.5 kullaniyorum.
computed by ile iki string alani birlestiriyorum. eger alanlarin ikiside bos degil ise islem basari ile sonuclaniyor fakat alanlardan bir tanesi bos ise deger null string olarak isleniyor...

bu durumda nasil bir yöntem kullanmaliyim?

selam ve dua ile...
ikra...
kıdemsiz üye
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

bu normal cunku gerek matematiksel islemler olsun ve de gerekse string islemelr olsun bu islemlere giren degerlerden biri null ise sonuc da null olur.... yani

Kod: Tümünü seç

null+'deneme'=null 
null*3=null
gibi...
Bu durumu bilirsek onlem almak kolay... String toplamada zannediyorum null olani bos string olarak kabul etsin istersiniz yani

Kod: Tümünü seç

null + 'deneme'='deneme' 
bunun gibi...

Bu durumda ya ilgili alanlara is null kontrolu yapacaksiniz ya da Sybase isnull diye bir fonksiyon var zannediyorum firebird de de artik olmasi laizm yoksa bile udf ile geliyor.... O fonksiyon ile isinizi kolayca gorebilirsiniz... Sybase dekinde syntax soyle:

Kod: Tümünü seç

isnull(STRING_ALAN1,'')+isnull(STRING_ALAN2,'')
Boylece null olan degerler yerine bos bir string isleme sokulmus olur... Ayrica bu tur hesaplamalara giren alanlar kullanıcı tarafından doldurulması da gerekiyorsa bu alanları not null olarak tanımlamak da kısmi bir onlem olabilir..
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

hocam tesekkür ederim. verdigin ip ucundan yola cikarak su sekilde cözdüm olayi... toplam üc alan...

Kod: Tümünü seç

COMPUTED BY (case when (strasse) is null and (platz) is null then
ort
when (strasse) is null and (ort) is null then
platz
when (strasse) is null and (platz) is not null and (ort) is not null then
platz||' '||ort
when (strasse) is not null and (platz) is null and (ort) is null then
strasse
when (strasse) is not null and (platz) is null and (ort) is not null then
strasse||' '||ort
when (strasse) is not null and (platz) is not null and (ort) is null then
strasse||' '||platz
when (strasse) is not null and (platz) is not null and (ort) is not null then
strasse||' '||platz||' '||ort end)
diger arkadaslara yardimci olmasi umuduyla..

ikra...
kıdemsiz üye
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Firebird de Coalesce fonksiyonunu kullanarak daha sade bir yolla bunu çözebilirsiniz

Kod: Tümünü seç

COMPUTED BY COALESCE(strasse,'') || ' ' || COALESCE(platz,'') || ' ' || COALESCE(ort,'');
İyi çalışmalar
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

Kod: Tümünü seç

COMPUTED BY (CASE WHEN (ADI IS NULL) THEN SOYADI
WHEN  (SOYADI IS NULL) THEN ADI
 ELSE ADI||' '||SOYADI END)
Buda benim yöntem
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

Allah cümlenizden razi olsun insaAllah... ilginiz icin cok tesekkür ediyorum...

selam ve dua ile...
ikra...
kıdemsiz üye
Cevapla