Felix Riesterer: MySQL bedingtes Leerzeichen hinzufügen

Beitrag lesen

Liebe(r) DiBo33,

IF()

Aha! Das kann man in der SELECT-Klausel verwenden? Cool!

SELECT

CONCAT(
        orte.PLZ,
        ' ',
        orte.Name,
        IF(orte.Zusatz REGEXP '[1]', ' ', ''),
        orte.Zusatz
    ) AS Ort_detailliert
FROM orte

  
Jetzt erhalte ich jede Menge Treffer, die ein einziges NULL enthalten. Das liegt daran, dass der Zusatz auch NULL sein kann. Und wenn er Null ist, ist das gesamte Ergebnis NULL. Daher lautet das tatsächlich benötigte SQL-Monster so:  
  
~~~sql
SELECT  
    CONCAT (  
        `orte`.`PLZ`,  
        ' ',  
        `orte`.`Name`,  
        IF (`orte`.`Zusatz` IS NOT NULL,  
            CONCAT (  
                IF (`orte`.`Zusatz` REGEXP '^[^,/]',  
                    ' ',  
                    ''  
                ),  
                `orte`.`Zusatz`  
            ),  
            ''  
        )  
    ) AS `Ort_detailliert`  
FROM `orte`

Ganz herzlichen Dank für den entscheidenden Hinweis! Mein Problem ist gelöst.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)

  1. ^,/ ↩︎