Forum

ISNULL fonksiyonu ç...
 
Bildirimler
Hepsini Temizle

[Çözüldü] ISNULL fonksiyonu çalışmıyor

19 Yazılar
4 Üyeler
4 Reactions
5,409 Görüntüleme
(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

Merhaba.

SELECT TOP 1 ISNULL(KolonAdi, 'XXX') FROM TabloAdi WHERE KolonAdi = x

sorgumu çalıştırdığımda 0 rows geliyor yani herhangi bir satır gelmiyor. Bu durumda oluncada ISNULL fonksiyonu çalışmıyor. Sizce ISNULL yöntemini kullanarak MEVCUT SELECT SORGUSU İÇİNDE nasıl varsayılan değer atayabilirim.

(MSSQL Exp. 2016)

 
Gönderildi : 25/12/2019 12:34

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

@mehmetugur Merhaba

SELECT TOP 1 ile veri çektiğiniz için ilk kaydı getirmekte ve onda KolonAdi satırı boş olabilir.

WHERE KolonAdi = x şartında verdiğiniz koşulun karşılığı tabloda olmayabilir.

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 25/12/2019 13:39

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

Merhaba

Saten sorumda da sizin dediğiniz durumu açıklamıştım. Şarta bağlı herhangi bir değer gelmiyor o yüzden de isnull haliyle çalışmıyor , bu durumda nasıl varsaylan bir değer atarım

 
Gönderildi : 25/12/2019 14:00

(@serkanates)
Gönderiler: 1323
Üye
 

Sorgunuzu aşağıdaki gibi düzenleyip tekrar dener misiniz ? İyi çalışmalar.

SELECT TOP 1 ISNULL(MIN(KolonAdi), 'XXX') FROM TabloAdi WHERE KolonAdi = x

 
Gönderildi : 25/12/2019 14:46

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

Serkan bey WHERE ifadesine bağlı olarak hiçbir sonuç gelmiyor. Burada anahtar kelime hiç değer dönmeyen bir SELECT sorgusuna nasıl varsayılan değer atılır onu bulamadım. Dediğiniz yöntem mevcut çıktıyı değiştirmeyecek

 
Gönderildi : 27/12/2019 15:03

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba @mehmetugur

Veri olmasa bile istediğiniz karakter gelsin istiyorsanız:

SELECT
ISNULL(
( SELECT
Adi
FROM Hasta.Hasta
WHERE State = 2
AND Adi LIKE 'deneme%') ,
List.Veri ) AlanAdi
FROM
( SELECT
'Boş' Veri) List ;

1

 

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 27/12/2019 16:03

(@cankaya)
Gönderiler: 119
Üye
 
Gönderen: @mehmetugur

Merhaba.

SELECT TOP 1 ISNULL(KolonAdi, 'XXX') FROM TabloAdi WHERE KolonAdi = x

sorgumu çalıştırdığımda 0 rows geliyor yani herhangi bir satır gelmiyor. Bu durumda oluncada ISNULL fonksiyonu çalışmıyor. Sizce ISNULL yöntemini kullanarak MEVCUT SELECT SORGUSU İÇİNDE nasıl varsayılan değer atayabilirim.

(MSSQL Exp. 2016)

ISNULL fonksiyonu bunu sağlamaz. Bunu hiçbir fonksiyon sağlamaz bu iş için @mehmetsucu beyin paylaştığı gibi bir yöntemle sonuca ulaşabilirsiniz ancak. Bu arada NULL eşit değildir olmayan veri.

 
Gönderildi : 28/12/2019 13:27

(@serkanates)
Gönderiler: 1323
Üye
 

@mehmetugur gönderdiğim sorguyu denediniz mi ? Hangi SQL Server sürümünü kullanıyorsunuz ?

 
Gönderildi : 29/12/2019 08:07

(@cankaya)
Gönderiler: 119
Üye
 

@SerkanAtes

Resultset boş geldiği için sorgunuz hiçbir şey getirmeyecektir.

 
Gönderildi : 29/12/2019 10:44

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

@mehmetsucu

Verdiğiniz kod doğru çalışıyor. Yalnız veri olmadığında ikinci SELECT sorgusu devreye girsin istiyorum lakin onda da Invalid column name hatası aldım. Sorguyu resim olarak ekledim.

99999
 
Gönderildi : 29/12/2019 11:44

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 
Gönderen: @cankaya
Gönderen: @mehmetugur

Merhaba.

SELECT TOP 1 ISNULL(KolonAdi, 'XXX') FROM TabloAdi WHERE KolonAdi = x

sorgumu çalıştırdığımda 0 rows geliyor yani herhangi bir satır gelmiyor. Bu durumda oluncada ISNULL fonksiyonu çalışmıyor. Sizce ISNULL yöntemini kullanarak MEVCUT SELECT SORGUSU İÇİNDE nasıl varsayılan değer atayabilirim.

(MSSQL Exp. 2016)

ISNULL fonksiyonu bunu sağlamaz. Bunu hiçbir fonksiyon sağlamaz bu iş için @mehmetsucu beyin paylaştığı gibi bir yöntemle sonuca ulaşabilirsiniz ancak. Bu arada NULL eşit değildir olmayan veri.

Saten hepimiz aynı şeyi söylüyoruz, benim ISNULL ile halletmek istiyorum dememde ki amaç sp vb. yazmadan isnull un çalışma mantığı idi. Yani var ise olanı getir, yok ise şunu getir gibi

 
Gönderildi : 29/12/2019 11:47

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 
Gönderen: @SerkanAtes

@mehmetugur gönderdiğim sorguyu denediniz mi ? Hangi SQL Server sürümünü kullanıyorsunuz ?

Bir önceki mesajımda da dediğim gibi WHERE ifadesine bağlı olarak değer gelmiyor. Sizin cümleciğinizde değer geliyor varsayılmış onun üzerinde min değeri alınmış, dediğiniz sorgu çözümün dışında

 
Gönderildi : 29/12/2019 11:50

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

Bu arada herkese teşekkürler, bazı özel nedenlerden dolayı dönüşüm biraz geç oldu kusura bakmayın.

 
Gönderildi : 29/12/2019 11:51

(@serkanates)
Gönderiler: 1323
Üye
 
Gönderen: @mehmetugur
Gönderen: @SerkanAtes

@mehmetugur gönderdiğim sorguyu denediniz mi ? Hangi SQL Server sürümünü kullanıyorsunuz ?

Bir önceki mesajımda da dediğim gibi WHERE ifadesine bağlı olarak değer gelmiyor. Sizin cümleciğinizde değer geliyor varsayılmış onun üzerinde min değeri alınmış, dediğiniz sorgu çözümün dışında

@mehmetugur bey, cevabınızdan sorguyu denemediğinizi anlıyorum. Sorguyu test edip sonucunu paylaşabilir misiniz ? Hangi Sql Server sürümünü kullandığınızı da belirtin lütfen.

 
Gönderildi : 29/12/2019 12:18

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba @SerkanAtes 

2014 ve üzerinde isnull içinde min max fonksiyonları kullanıldığında satırda veri olmasa bile değer aktarır. min max da string değer kullanılabilir.  Senin sorgun da doğru.

@mehmetugur , @SerkanAtes yazdığını da kullanabilirsin SELECT TOP 1 ISNULL(MIN(KolonAdi), 'XXX') FROM TabloAdi WHERE KolonAdi = x

@mehmetugur son hata aldığında List.veri değil List.TeslimTarihi yazman gerekiyor.

 

Sorunların bu denli güzel bir platformda çözüm bulması mutluluk verici. Herkesin emeğine sağlık.

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 29/12/2019 14:12

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

@SerkanAtes

denedim yine 0 rows etkilendi. MSSQL Exp. 2016

444

@mehmetsucu

Malesef yine aynı

ISNULL
 
Gönderildi : 29/12/2019 22:08

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba @mehmetugur

Her iki query de çalışıyor. Fakat sizin kullanım şekliniz yanlış. Yazdığınız BakimZamani ve TeslimZamani alanlarında  veri yok. Yani her ikisi de boş ise veri gelmez. Bu yüzden kendiniz bir alan ismi yazmalısınız ya da iç içe isnull kullanmanız gerekiyor.

Yani BakimZamani ve TeslimZamani alanlarında veri yok ise 'Veri Yok' yazmanız gerekiyor.

Ya da COALESCE fonksiyonu ile tek satırda yazabilirsiniz.

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 29/12/2019 23:20

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

Günaydın @mehmetsucu

Veri olmaz ise tabi ki de gelmez saten olmayan bir veriye ulaşma gibi durumumuz yok. 2 satırlık veri var ikisinde BakımZamanı dolu, Teslim Tarihi boş,

 
Gönderildi : 30/12/2019 08:56

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Günaydın @mehmetugur

Query mantığını yanlış kuruyorsun. İçeride veri yoksa gelecek satır bilgisini senin vermen gerekiyor ya da   Coalesce ile farklı satırlara yönlendirmen lazım. Query ler doğru çalışıyor.

SELECT * FROM dbo.test ;

SELECT ISNULL(( SELECT CONVERT(VARCHAR(10),TeslimZamani,121) FROM dbo.test ) ,
List.Veri ) AlanAdi1
FROM ( SELECT 'Boş Alan' Veri) List ;

SELECT ISNULL(( SELECT CONVERT(VARCHAR(10),TeslimZamani,121) FROM dbo.test WHERE Id=10/* Id=10 diye bir satır yok*/) ,
List.Veri ) AlanAdi2
FROM ( SELECT 'Boş Alan' Veri) List ;

SELECT TOP 1 ISNULL(CONVERT(VARCHAR(10),TeslimZamani,121), 'Boş Alan') AlanAdi3 FROM dbo.test

SELECT TOP 1 ISNULL(MIN(CONVERT(VARCHAR(10),TeslimZamani,121)), 'Boş Alan') AlanAdi4 FROM dbo.test WHERE Id=10 /* Id=10 diye bir satır yok*/

Ekran Alıntısı

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 30/12/2019 09:21

Paylaş: