ISNULL fonksiyonu ç...
 
Bildirimler
Hepsini Temizle

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

  RSS
Mehmet UGUR
(@mehmetugur)
Üye

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)

Alıntı
Gönderildi : 25/12/2019 12:34
Mehmet Sucu
(@mehmetsucu)
Üye

@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ı
mehmetsucu_44@hotmail.com

CevapAlıntı
Gönderildi : 25/12/2019 13:39
Mehmet UGUR
(@mehmetugur)
Üye

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

CevapAlıntı
Gönderildi : 25/12/2019 14:00
Serkan Ateş
(@SerkanAtes)
Ü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

CevapAlıntı
Gönderildi : 25/12/2019 14:46
Mehmet UGUR
(@mehmetugur)
Üye

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

CevapAlıntı
Gönderildi : 27/12/2019 15:03
Mehmet Sucu
(@mehmetsucu)
Üye

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ı
mehmetsucu_44@hotmail.com

CevapAlıntı
Gönderildi : 27/12/2019 16:03
Can Kaya
(@cankaya)
Üye Forum Yöneticisi
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.

CevapAlıntı
Gönderildi : 28/12/2019 13:27
Mehmet Sucu beğendi
Serkan Ateş
(@SerkanAtes)
Üye

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

CevapAlıntı
Gönderildi : 29/12/2019 08:07
Can Kaya
(@cankaya)
Üye Forum Yöneticisi

@SerkanAtes

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

CevapAlıntı
Gönderildi : 29/12/2019 10:44
Mehmet Sucu beğendi
Mehmet UGUR
(@mehmetugur)
Üye

@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
CevapAlıntı
Gönderildi : 29/12/2019 11:44
Mehmet UGUR
(@mehmetugur)
Üye
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

CevapAlıntı
Gönderildi : 29/12/2019 11:47
Mehmet UGUR
(@mehmetugur)
Üye
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

CevapAlıntı
Gönderildi : 29/12/2019 11:50
Mehmet UGUR
(@mehmetugur)
Üye

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

CevapAlıntı
Gönderildi : 29/12/2019 11:51
Serkan Ateş
(@SerkanAtes)
Ü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.

Bu ileti 10 ay önce Serkan Ateş tarafından düzenlendi
CevapAlıntı
Gönderildi : 29/12/2019 12:18
Mehmet Sucu
(@mehmetsucu)
Üye

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ı
mehmetsucu_44@hotmail.com

CevapAlıntı
Gönderildi : 29/12/2019 14:12
Mehmet UGUR
(@mehmetugur)
Üye

@SerkanAtes

denedim yine 0 rows etkilendi. MSSQL Exp. 2016

444

@mehmetsucu

Malesef yine aynı

ISNULL
CevapAlıntı
Gönderildi : 29/12/2019 22:08
Mehmet Sucu
(@mehmetsucu)
Üye

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ı
mehmetsucu_44@hotmail.com

CevapAlıntı
Gönderildi : 29/12/2019 23:20
Mehmet UGUR
(@mehmetugur)
Üye

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ş,

CevapAlıntı
Gönderildi : 30/12/2019 08:56
Mehmet Sucu
(@mehmetsucu)
Üye

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ı
mehmetsucu_44@hotmail.com

CevapAlıntı
Gönderildi : 30/12/2019 09:21
Paylaş: