En iyi yanıtlayıcılar
Functionlar

Soru
-
Merhaba Arkadaşlar
Bir tane tablom var.
TelefonID, AdSoyad, EvTelefonu, CepTelefonu
Benden istenen şu, öncelik ev telefonu. Eğer kişinin ev telefonu varsa sonuc kişinin adı ve ev telefonu olarak dönücek. Eger ev telefonu NULL ise o zaman cep telefonu yazıcak. yukarıdaki deneme 3 veriye göre yola cıkacak olursak elde etmem gereken sonuç söyle olmalı
deniz xxx 216-1111111
ahmet xxx 212-3333333
veli xxx 532-6666666
Fikiri olan var mı ? if ile v.s çok takla attım ama yapamadım Sanırım functionlar ile olucak ama emin değilim.
Yazılım Uzmanı / Software Specialist
Yanıtlar
-
Deleted
- Yanıt Olarak İşaretleyen Deniz Şengül 24 Temmuz 2011 Pazar 05:24
23 Temmuz 2011 Cumartesi 21:07 -
COALESCE function' ını da kullanabilirsiniz.
tel1 tel2 tel3 şeklinde alanlar olduğunu düşünürsek,
tablomuzdaki verilerin de şu şekilde olduğunu düşünürsek
Ad Tel1 Tel2 Tel3
Deniz 0555555555 05054444444 NULL
Ahmet NULL 05321111111 05442222222
Veli NULL NULL 05438888888
Aşağıdaki gibi bir sorgu çalıştırdığımızda
SELECT Ad, COALESCE(tel1, tel2, tel3) AS Telefon FROM TELEFONLAR
Sonucu şu şekilde alırızDeniz 05555555555
Ahmet 05321111111
Veli 05438888888
Yani verilen parametrelerde ilk NULL olmayan veriyi getirir.
ISNULL' dan farkı, birden fazla parametre verilebilir.
http://www.mehmetx.com- Yanıt Olarak İşaretleyen Deniz Şengül 24 Temmuz 2011 Pazar 17:58
Tüm Yanıtlar
-
-
-
-
Mehmet bey, doğru tahmin ödevim ama nasıl yapacağıma dair fikri olan var mı diye bir konu açtım. Yazılmış bir kod istemedim : )
Aşağıdaki kod harici NULLIF() functionu var ama tam olarak benim istediğimi yapmıyor.
Aşağıdaki kodda yarım.
-- öncelik ev telefonu yoksa cep IF EXISTS(SELECT * FROM Telefonlar WHERE EvTelefonu IS NOT NULL AND CepTelefonu IS NULL) BEGIN --PRINT 'bu adamın ev telefonu var. cep yok' SELECT AdSoyad,EvTelefonu FROM Telefonlar WHERE EvTelefonu IS NOT NULL END IF EXISTS(SELECT * FROM Telefonlar WHERE CepTelefonu IS NOT NULL AND EvTelefonu IS NULL) BEGIN --PRINT 'bu adamın cep telefonu var. ev yok' SELECT AdSoyad,CepTelefonu FROM Telefonlar WHERE EvTelefonu IS NULL AND CepTelefonu IS NOT NULL END ELSE BEGIN PRINT 'ev ve cep teli yok.' END
Söyle bir sonuç alıyorum. bunu tek bir results ta almak lazım. Ayrıca bence böyle bir kod kullanışlı bir kod değil.
Yazılım Uzmanı / Software Specialist -
COALESCE function' ını da kullanabilirsiniz.
tel1 tel2 tel3 şeklinde alanlar olduğunu düşünürsek,
tablomuzdaki verilerin de şu şekilde olduğunu düşünürsek
Ad Tel1 Tel2 Tel3
Deniz 0555555555 05054444444 NULL
Ahmet NULL 05321111111 05442222222
Veli NULL NULL 05438888888
Aşağıdaki gibi bir sorgu çalıştırdığımızda
SELECT Ad, COALESCE(tel1, tel2, tel3) AS Telefon FROM TELEFONLAR
Sonucu şu şekilde alırızDeniz 05555555555
Ahmet 05321111111
Veli 05438888888
Yani verilen parametrelerde ilk NULL olmayan veriyi getirir.
ISNULL' dan farkı, birden fazla parametre verilebilir.
http://www.mehmetx.com- Yanıt Olarak İşaretleyen Deniz Şengül 24 Temmuz 2011 Pazar 17:58