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-Website , Community-Version herunterladen ( Windows-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!