2017-12-02 2 views
0

Gestern habe ich eine Frage zu group_concat gestellt. Ich habe mein Problem verstanden.Group_concat (distinct) für leere Strings

Ich habe eine Tabelle (mit 2 leeren Saiten):

Column1 


    C 
    D 
    D 

I Group_concat verwenden (distinct (column1)) und Ausgang:

, C, D 

Aber ich will

, , C, D 

Weil ich Distinct nur für Briefe brauche und nicht für leere stings. Irgendwelche Ideen?

+0

Es ist seltsam, weil ich noch nie etwas Group_concat benötigt. Ernsthaft in Betracht ziehen, Probleme der Datenanzeige im Anwendungscode zu behandeln – Strawberry

+0

Ich brauche group_concat für alles, denn nach, in meinem Code PHP, werde ich explode() verwenden, um meine Zeichenfolge in Array zu transformieren. Und ich muss alle Elemente (auch leere Zeichenfolgen) bekommen, um mein neues Array mit anderen zu vergleichen – Brododipollo

+0

Siehe. Wenn Sie den Gruppenkontakt überspringen, können Sie die Explosion überspringen. Win-win – Strawberry

Antwort

0

Cant Sie setzen where-Klausel die vlues entfernen Ich gehe davon aus das ist SQL Server so u

WHERE TRIM(column_name) IS NULL 
0

zunächst alle unterschiedlichen Werte auszuwählen, die nicht leer und Vereinigung sind sie alle mit leeren Werten verwenden können. Verwenden Sie dies als Unterabfrage und tun Sie group_concat.

Abfrage

select group_concat(t.`col_1` order by t.`col_1`) from(
    select distinct `col_1` from `your_table_name` 
    where trim(`col_1`) <> '' 
    union all 
    select `col_1` from `your_table_name` 
    where trim(`col_1`) = '' 
) t; 
0

können Sie tun:

group_concat(distinct trim(column1) separator ', ')