Gruppo mysql Concat per stringhe

Gruppo mysql Concat per stringhe

Gruppo _Concat La funzione è un gruppo per funzione aggregata che consente di concatenare i valori della colonna da più righe in un singolo campo. Restituisce una stringa se il gruppo set contiene un valore di colonna o senza null e restituisce un valore null se non è possibile trovare nessuno.

Questo tutorial ti insegnerà come utilizzare la funzione mysql group_concat () per combinare le stringhe da un gruppo con diverse opzioni.

Uso di base

Come abbiamo già detto, questa funzione restituisce un risultato stringa con i valori dei valori non nulli concatenati o un NULL se non esiste nessuno.

La sintassi generale è:

Group_concat ([distinto] expr [, expr…]
[Ordine di Unsigned_integer | col_name | expr
[ASC | DESC] [, col_name…]]
[Separatore str_val])

Spiegazione

Dalla sintassi sopra, puoi vedere che la funzione Group_Concat utilizza clausole e vincoli MySQL per specificare le varie opzioni:

  1. Distinto: La clausola distinta aiuta a rimuovere i valori duplicati nel gruppo set Bef0re il processo di concatenazione. Considera il nostro tutorial che spiega MySQL distinto per capire come funziona.
  2. ORDINATO DA: La clausola successiva è l'ordine di ciò che aiuta a ordinare i valori in un ordine specificato. L'ordine può essere ascendente o discendente. Se non viene specificato alcun ordine, MySQL forma i valori in ordine crescente.
  3. SEPARATORE: Questa clausola imposta la stringa letterale inserita tra i valori del gruppo sul processo di concatenazione. Per impostazione predefinita, MySQL usa una virgola (,) per separare i valori.

NOTA: Il risultato della stringa generato dalla funzione MySQL Group_Concat () è limitato a una lunghezza Il valore impostato nella variabile Group_Concat_max_len. Questo valore è definito nel sistema e ha un valore predefinito di 1024. È possibile modificare questo valore a livello globale o impostarlo nella sessione di cui hai bisogno.

Imposta [globale | Sessione] group_concat_max_len = value;

Considera il riferimento di seguito per saperne di più:

https: // dev.mysql.com/doc/refman/8.0/en/server-system-variabili.html#sysvar_group_concat_max_len

Come funziona: esempio

Consentitemi di usare un semplice esempio per spiegare come funziona la funzione Group_Concat (). Considera la tabella con un campo per Char come:

Creare tabella concat (valore char);

Inseriamo i valori nella tabella come mostrato nella query seguente:

Inserire in concat (valore) valori ('h'), ('e'), ('l'), ('l'), ('o');

Se eseguiamo un'operazione di base Group_Concat sui valori nella tabella, otterremo un risultato della stringa come mostrato di seguito:

Seleziona Group_Concat (Distinto Value Order per Value Asc separator ") da Concat;

Il valore risultante è:

+---------------------------------------------------------------+
| Group_Concat (distinto valori per valore separatore ascico "") |
+---------------------------------------------------------------+
| E h l o |
+---------------------------------------------------------------+
1 riga in set (0.01 sec)

Vuoi un altro modo per capire cosa è successo al risultato sopra indicato?

Iniziamo rimuovendo tutti i valori duplicati a causa della clausola distinta MySQL che rimuove una L.

Successivamente, procediamo all'ordine per ordine ascendente come definito in (ASC), che altera la stringa sotto forma di

Helo -> ehlo

Infine, eseguiamo il processo di concatenazione usando uno spazio come separatore per i valori impostati, risultando nella stringa e h l o da h, e, l, l o.

Esempio di casi d'uso

Prendiamo un vero database e lo utilizziamo per illustrare come possiamo implementare la funzione Group_Concat (). In questo esempio, useremo il database Sakila e in particolare la tabella degli indirizzi dal database Sakila.

Considera la risorsa di seguito per scaricare il database per i tuoi esempi:

https: // dev.mysql.com/doc/indice-altro.html

Nella tabella degli indirizzi del database Sakila, otterrai la colonna del distretto. Possiamo separare tutti i distretti unici da un tubo come mostrato nella query seguente:

Seleziona Group_Concat (distinto ordine distrettuale per distretto separatore "|" da Sakila.limite di indirizzo 5;

La query sopra visualizzerà tutti i distretti distinti e li ordinerà in ordine crescente separati da un tubo.

NOTA: La funzione Group_Concat () è una funzione aggregata. Pertanto, è necessario che si specifichi l'istruzione Order per.

Conclusione

La funzione MySQL Group_Concat () discussa in questo tutorial è una funzione utile che consente di creare dati univoci, ordinati e organizzati da una tabella che può contenere duplicati e dati non ordinati.

Considera i documenti o i nostri altri tutorial MySQL per saperne di più.