2013-06-24 16 views
34

mam następujące:SQL łączyć z pustym ciągiem

 Select Coalesce(Other,Industry) Ind from registration 

Chodzi o to, że inne może być pusty ciąg lub NULL. Jak uzyskać koalescencję do działania tak, że jeśli opcja Inne jest pustym łańcuchem, Coalesce nadal zachowuje się tak, jak powinien?

+2

Jak zrobić * ty * myślę że COALESCE powinien zachowywać się, jak to wydaje się być coś innego niż standardowe? – Guffa

Odpowiedz

76

użycie wyrażenia CASE lub NULLIF:

SELECT COALESCE(NULLIF(Other,''),Industry) Ind FROM registration 
13

spróbować tej

Select Coalesce(nullif(Other,''),Industry) Ind from registration 
3

Można również użyć skrótu wiedząc, że NULL <> '' nie ocenia się TRUE ...

CASE WHEN other <> '' THEN other ELSE industry END 

Logika działa następująco: ...

  • CASE WHEN 'fubar' <> '' THEN other ELSE industry END
    =>CASE WHEN true THEN other ELSE industry END
    =>other

  • CASE WHEN '' <> '' THEN other ELSE industry END
    =>CASE WHEN false THEN other ELSE industry END
    =>industry

  • CASE WHEN NULL <> '' THEN other ELSE industry END
    =>CASE WHEN NULL THEN other ELSE industry END
    =>industry