2010-07-09 15 views
34

Ben o zaman seçmeMySQL IFNULL

olmasıdır alan b olacağını null ise saha a denetler böylece bu

IFNULL(field_a,field_a,feild_b) 

gibi seçkin koşullu yapmak istiyorum bir select deyimi var mümkün ?

cevap

68

kullanımı COALESCE:

SELECT COALESCE(field_a, field_b) 

BIRLEŞIM soldan sağa doğru sütun işlem, belirtilen sütun listesinden olmayan ilk boş değer geri gönderir bir ANSI standart fonksiyonudur. Bu nedenle, örnekte, field_a boşsa, field_b değeri görüntülenir. Ancak, belirtilen sütunlardan sıfır olmayan bir değer yoksa, bu işlev NULL değerini döndürür.

O, (ı 4.1 üzerinde kullandım) MySQL üzerinde desteklenen SQL Server (V2000 beri), Oracle 9i + ediyor

...

+3

Ben de COALESCE kullanılmasını desteklemektedir. –

+0

İşlev nasıl işlediğine dair net bir açıklama ... Teşekkürler! Kırık link güncellendi. – Andrew

34

Evet, ama sadece iki parametre var:

IFNULL(field_a,field_b) 

ise field_a boş değil, iade edilecektir. Aksi halde field_b iade edilecektir.

Referans: IFNULL

28

ve (sadece boş karşılaştırmalar için esnek) o kediyi başka bir yolu ...

select if(field_a is not null, field_a, field_b) from... 
+1

En iyi cevap. 'Yap seçeneğine izin ver (ad null değilse, CONCAT (' name is: ', name),' '); ' – Apolo

+0

' seçin IFNULL (sütun,' default ') 'da çalışır. Buraya bakın: http://sqlfiddle.com/#!9/14b752/1/0 – Arda