2010-02-13 9 views
10
SELECT Concat(mp.cHospital ,',',mp.cHospital1,',',mp.cHospital2) as Hospital FROM TBL 

Ich möchte nicht null-Wert zurück,mysql concate Scheck nicht null

wie nicht null überprüfen oder wie isset cond in Abfrage machen

Antwort

17

Per Definition (fast) jede Operation mit NULL wird zu NULL führen, da NULL bedeutet "undefined". Ich interpretiere Ihre Frage, dass entweder cHospital oder cHospital1 oder cHospital3 NULL sein könnte, die Sie überprüfen möchten. Die Frage ist: Was soll passieren? Sie wollen nur das Feld mit einem leeren Sting und dann die Concat oder alle ersetzen?

Ich nehme die erste an. das könnte wie folgt aussehen:

SELECT Concat(
    IFNULL(mp.cHospital, ''), 
    ',', 
    IFNULL(mp.cHospital1,''), 
    ',', 
    IFNULL(mp.cHospital2,'')) AS Hospital 
FROM TBL 

IFNULL gibt den ersten Teil, es sei denn, seine NULL, wo sie den zweiten Teil (leere Zeichenkette hier) zurückgibt.

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_ifnull

+0

[Alt-Text] [1] siehe Screenshot plz [1]: http://img407.imageshack.us/img407/711/mysqlconcatprob.jpg – Bharanikumar

+1

Ich weiß nicht, was Sie wollen. – johannes

+0

ich versuchte das oben, wenn Nullbedingung, sogar es durchlaufendes null ans – Bharanikumar

1
COALESCE(val1, val2, val3, ...) 

wird die erste nicht Nullwert zurückgeben, zum Beispiel

COALESCE(@val, '') 

wird leeren String zurück, wenn @val null ist.