2013-04-12 15 views

cevap

0

bu deneyin: DEĞİL olmadan

WHERE NOT(column LIKE '_%') 

, sütunun değeri en az bir karakter olmalı ve NULL olamaz.

DÜZENLEME: MySQL hala NULL değerini bu şekilde yutuyor gibi görünüyor. Bu daha iyi çalışması gerekir:

WHERE IFNULL(column, '') = '' 
+0

[çalışmaya görünmüyor] (http://sqlfiddle.com/#!9/e6c26/ 1) – Kermit

27

'normalize' Kullanım COALESCE() değeri (boş bir dizeye NULL değerleri dönüştürmek);

WHERE COALESCE(mycolumn, '') = '' 

Belgeleri okuyun: COALESCE()

Ya tersi; boş dizeleri NULL olarak dönüştür;

WHERE NULLIF(mycolumn, '') IS NULL 

Dokümantasyon: standart ANSI SQL bir parçası olduğu için bu ikisinden NULLIF()

, ben COALESCE() tercih ediyorum

Sen kendin, sadece bunu deneme yapabilirsiniz

;

SELECT 
    mycolumn      AS orig_value, 
    COALESCE(mycolumn, '')  AS coalesce_value, 
    (COALESCE(mycolumn, '') = '') AS compare_result 

FROM mytable; 

Bu

orijinal değerini, 'kaynaşabilecek' değeri ve bu deneyin NEREDE olmadan masaya

+0

Bunun olumsuz versiyonu sadece WHERE COALESCE (mycolumn, '') <> '' 'olur mu? – vertigoelectric

+0

Evet, COALESCE, ** ilk boş olmayan değeri döndürür **. Yani, eğer 'moloz' 'NULL' ise, geri dönecektir ''. Eğer mycolumn * başka bir değer * ise (boş bir dize de dahil olmak üzere), “mycolumn” değeri döndürülecektir. – thaJeztah

+1

@vertigoelectric bu soruyu "yanıtlandı" şeklinde yapabilir misiniz? – thaJeztah

3
WHERE COALESCE(column, '') = '' 
+0

LOL, aynı çözümü aynı anda yayınladık gibi görünüyor :) – thaJeztah

+0

@thaJeztah lol evet sadece 2 saniye arayla: P – Esailija

1

başka yöntem her satır için yan karşılaştırma tarafında sonucunu gösterecektir ..

hem Boş seçmek Will ve NULL değerleri

SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename 
İlgili konular