MySQL-Funktion: Verwendung von Zeile-zu-Spalte CONCAT, CONCAT_WS, GROUP_CONCAT (wesentlich)

Vorwort

Ich habe MySQL schon lange nicht mehr berührt .

Aus einer Laune heraus wollte ich heute plötzlich etwas über das Umschalten von MySQL- Spalten wissen . Nachdem ich einige Artikel gelesen hatte, war der Fokus nicht klar, also habe ich Folgendes!

Offizielle MySQL-WebsiteCommunity-Version herunterladenWindows-Version_mysql.8.0.31 herunterladen   )

Überblick

MySQL stellt intern drei Funktionen für die Spaltenkonvertierung bereit, nämlich:

CONCAT( str1,str2,... )

CONCAT_WS( Trennzeichen,str1,str2,... )

GROUP_CONCAT( expr )

Datenaufbereitung

Die Daten sind wie folgt, einfach und klar.

#1、查看原始数据
select * from student;  

 

Wie in der Abbildung oben gezeigt, reichen drei Daten aus, um das Problem zu erklären. 

Fall Analyse

1. Analyse der CONCAT( str1, str2,... ) -Funktion

Als ich zunächst die Parameter dieser Funktion, str1 und str2, sah, hatte ich sofort einen Impuls: Diese beiden Parameter sollten als beliebige Zeichenfolgen betrachtet werden.

1. Verwenden Sie die Funktion concat, um eine beliebige Zeichenfolge zu verketten

select CONCAT('aaa',',','bbb') as info from dual;

 

 Der Effekt ist in der Abbildung dargestellt: Mit concat können Sie jede beliebige Zeichenfolge verbinden und das Trennzeichen anpassen !

2. Verwenden Sie die Funktion concat, um jede Datenzeile in mehrere Spalten -> eine Zeile  einzufügen

select CONCAT(s.id,',',s.name,',',s.age) as infos from student s;

3. Vorsichtsmaßnahmen

Wenn Sie nur die einspaltigen Daten in der Tabelle in eine Zeile konvertieren möchten , erscheint die Concat- Funktion etwas machtlos und Sie müssen die Funktion group_concat verwenden , die im dritten Abschnitt unten vorgestellt wird ! 

2. Analyse der Funktion CONCAT_WS( Separator,str1,str2,... ) .

Aus der Grammatik ist das Trennzeichen das Trennzeichen , gefolgt von str1 und str2 usw., das sind gespleißte Felder.

Es ist nicht schwer zu verstehen, dass diese Funktion das Trennzeichen nur einmal angeben muss

select CONCAT_WS('#',id,name,age )  as infos from student  ;

Hinweis: Schade, dass die CONCAT_WS-Funktion immer noch nicht das Umschalten einer einzelnen Spalte zulassen kann!

Im technischen Bereich gibt es Spezialisierungen und für den Berufswechsel ist in einem Einzelfall die folgende Funktion GROUP_CONCAT erforderlich!

3. Analyse der Funktion GROUP_CONCAT( expr ) ( Hervorhebung )

1. Einzelfallübertragung

select GROUP_CONCAT(name) as names from student ;

 

Erläuterung: Dieser Fall ist eine einfache Demonstration dieser Funktion und bedingte Anweisungen wie „Where Group By“ können nach dem SQL noch hinzugefügt werden. 

2. Erweiterung

select GROUP_CONCAT('111',name) as names from student ;
select GROUP_CONCAT(name,'222') as names from student ;
select GROUP_CONCAT('111',name,'222') as names from student ;

Operationsergebnis:

111succ,111chouniu,111succ
succ222,chouniu222,succ222
111succ222,111chouniu222,111succ222

4. Erweiterung

Oracle verwendet häufig eine Spaltenkonvertierung

select * from emp;
--方法一:使用concat函数,该函数只能有两个参数(不可以自定义分隔符),但是它允许套用
select concat(empno,ename) from emp; 
SELECT CONCAT(CONCAT('A', 'B'),'C')FROM dual;

--可以合并任意多个列为一行
select empno || ',' ||ename from emp;

--单列合并为一行,默认分隔符为逗号,如果想制定分隔符,则需要用replace函数协助
select wm_concat(ename) from emp;    
select replace(wm_concat(ename),',','|') from emp;

Zusammenfassen

Bisher wurde die Verwendung der drei Funktionen CONCAT , CONCAT_WS und GROUP_CONCAT grundsätzlich klar eingeführt. In der tatsächlichen Entwicklung wird die Szene natürlich viel komplizierter sein.

Die gute Nachricht ist, dass es mit Hilfe dieser drei Funktionen noch leistungsfähiger sein wird, in einem späteren Stadium kompliziertere Zeilen-in-Spalten-Konvertierungen durchzuführen!

Epilog

Es gibt zu viele MySQL- Wissenspunkte, und weitere wichtige MySQL-Wissenspunkte werden später veröffentlicht. Wenn sie nicht veröffentlicht werden, handelt es sich um gute Produkte , kein Unsinn!

Wenn Sie es nützlich finden, hinterlassen Sie bitte eine Nachricht, ein „Gefällt mir“ und ein Lesezeichen!

Supongo que te gusta

Origin blog.csdn.net/xp871038951/article/details/128266346
Recomendado
Clasificación