none
Functionlar RRS feed

  • 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
    22 Temmuz 2011 Cuma 19:34

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ız

     

    Deniz   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
    24 Temmuz 2011 Pazar 12:41

Tüm Yanıtlar

  • kodunu paylaşırsan devamnı hemen yazalım

    iki if ıle bıtırebılırsın bu ısı


    IT@yazilimcinet.com | www.yazilimcinet.com
    22 Temmuz 2011 Cuma 20:24
  • bunun için bir function var ama sanırım bu sizin ödeviniz :)


    http://www.mehmetx.com
    22 Temmuz 2011 Cuma 21:02
  • isnull() fonksiyonudur.
    23 Temmuz 2011 Cumartesi 05:12
  • 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
    23 Temmuz 2011 Cumartesi 09:02
  • 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ız

     

    Deniz   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
    24 Temmuz 2011 Pazar 12:41