2016-03-21 25 views
2

Parametre boşsa veya parametrenin boş olmaması durumunda eşleşme kaydına getirilirse, tüm kaydı getiren bir senaryonun olduğu SQL'de saklı bir yordam yazıyorum. değeri boşsa table.value olduğu SQL'de @param IS NULL OR değeri = @param anlamına gelir?

table.value = ISNULL(@param,table.value) 

Ama değeri boş değilse bu durumda

, iyi çalışıyor, ama sonra dışındaki tüm kayıt getirme: Bu durumda, ben hep böyle ISNULL kullanmak boş. Bu yüzden arama yaptım ve sII ile cevaplanan bir here çözüm buldum. ama ben @param IS NULL OR value= @param ifadesini anlamıyorum Benim için iyi çalışıyor ama anlayamıyorum? Nasıl çalışır? Cevap için şimdiden teşekkür ederiz.

+0

Bir OR ile iki kısım ifadedir ..

SELECT *FROM TABLE WHERE value= 1. 

Asistan anlıyorum Umut, olur ... param IS NULL ilk koşullu olduğu değer = param doğrudur. Bununla ilgili sorun nedir? –

+0

@UsamaZafar herhangi bir sorun yok. Nasıl çalıştığını bilmek istiyorum? – CodeLover

cevap

3

ALL IF NULL Bildirimi ile ilgili bilgilerim aşağıdadır.

Durum 1: @param IS NULL parametresi. kayıtlar o kısmı göre alıp bunu Yani

NULL IS NULL OR value= @param. 

All if NULL deyimi böyle olur Bu durumda

, İşte OR ifadenin left kısmı True haline gelir. Bu nedenle, sorgu, SELECT *FROM TABLE. ile aynı olan SELECT *FROM TABLE WHERE NULL IS NULL olur, böylece tüm kayıtları alır.

Durum 2: Parametre @param bir değeri varsa (örneğin değeri = 1)

All if NULL deyimi böyle olur Bu durumda

, İşte

1 IS NULL OR value= 1. 

OR ifadenin left parçası olur False, Kayıtlar right bölümüne göre alınacaktır. ya bu doğru veya koşullu ikinci yani Yani sorgu

+0

Evet anlıyorum.Teşekkürler dostum – CodeLover

+0

hoşgeldiniz :) – bmsqldev

İlgili konular