2013-04-12 11 views

Odpowiedz

0

Spróbuj tego:

WHERE NOT(column LIKE '_%') 

bez NOT, wartość kolumny musi mieć co najmniej jeden znak i nie może być NULL.

EDYCJA: MySQL nadal wydaje się połknąć wartość NULL w ten sposób. To powinno działać lepiej:

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

[nie wydają się działać] (http://sqlfiddle.com/#!9/e6c26/ 1) – Kermit

27

Zastosowanie COALESCE() do 'normalize' wartość (konwersja wartości NULL na pusty ciąg);

WHERE COALESCE(mycolumn, '') = '' 

Przeczytaj dokumentację: COALESCE()

Lub na odwrót; przekonwertuj puste ciągi na NULL;

WHERE NULLIF(mycolumn, '') IS NULL 

Dokumentacja: NULLIF()

tych dwóch wolałbym COALESCE(), ponieważ jest częścią SQL ANSI

Można eksperymentować ze to sam, po prostu to zrobić;

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

FROM mytable; 

To pokaże wartość pierwotną, wartość „zlewają się” i wynik boku porównania obok siebie dla każdego wiersza w tabeli

+0

Czy jego negatywną wersją byłby po prostu "WHERE COALESCE (mykolumn, '') <> ''? – vertigoelectric

+0

Tak, COALESCE zwraca ** pierwszą wartość inną niż null **. Tak więc, jeśli 'mycolumn' ma wartość' NULL', to zwróci wartość ''. Jeśli 'mycolumn' jest * dowolną inną wartością * (łącznie z pustym łańcuchem), zwracana będzie wartość' mycolumn'. – thaJeztah

+1

@vertigoelectric Czy możesz ustawić to pytanie jako "odpowiedziałeś"? – thaJeztah

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

LOL, wydaje się, że wysłaliśmy to samo rozwiązanie w tym samym czasie :) – thaJeztah

+0

@thaJeztah lol tak tylko 2 sekundy od siebie: P – Esailija

1

Inną metodą bez GDZIE, spróbuj tego ..

Czy wybrać zarówno Puste i wartości NULL

SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename 
Powiązane problemy