SQL-Funktion zum Zusammenführen eines Feldes

SQL-Funktion zum Zusammenführen eines Feldes

Vor kurzem musste ich alle Felder einer verknüpften Tabelle abfragen und in einem Feld neu gruppieren. Zu diesem Zeitpunkt kann eine normale Join-Abfrage die Anforderungen nicht erfüllen. Um sie zu erfüllen, ist eine SQL-Funktion erforderlich:

ALTER-Funktion dbo.getResCodesByOwnerId(@OwnerId INT)
gibt nvarchar(2000) zurück
als
beginnen
DECLARE @codes VARCHAR(2000)
Setzen Sie @codes=''
Wählen Sie @codes=stuff((Wählen Sie ','+residence_code von crm_owner co left, verbinden Sie crm_owner_residence cor auf co.id=cor.owner_id, wobei co.id=@OwnerId für XML-Pfad('')),1,1,'')
@Codes zurückgeben
ENDE

Nehmen Sie zum Testen die Daten mit der ID = 2 und erhalten Sie das Ergebnis:

Wählen Sie (Datenbankname).getResCodesByOwnerId(fr.owner_id) als Zimmercode
von t1 fr links zu t2 frd auf fr.owner_id=frd.owner_id

Ergebnis:

1101010105,11GU002,1101010104

Ergänzung: SQL STUFF Funktion verkettet Strings

Heute habe ich einen Artikel über Parallelität gesehen. Ich habe ihn auch studiert und er war ziemlich gut.

Will diesen Effekt.

Tabelle tb erstellen(idint, Wert varchar(10))
einfügen in tbvalues(1,'aa')
einfügen in tbvalues(1,'bb')
einfügen in tbvalues(2,'aaa')
einfügen in tbvalues(2,'bbb')
einfügen in tbvalues(2,'ccc')
gehen
 
/* Zeug(Param1, Startindex, Länge, Param2)

Beschreibung: Löschen Sie beginnend bei startIndex (SQL beginnt bei 1, nicht bei 0) Längenzeichen aus param1 und ersetzen Sie dann die gelöschten Zeichen durch param2. */

SELECT-ID,
           Wert = Zeug
             ((SELECT ',' + Wert
               VON tb ALS t
               WO t .id = tb.id FÜR XML-Pfad('')), 1, 1, '')
VON tb
GROUP BY-ID

Das ist es.

Erfasste Informationen

/* 
Titel: Einer der durch ein Feld zusammengeführten Strings (einfache Zusammenführung) 
Autor: (Nach 18 Jahren Wind und Regen blüht der Schneelotus auf dem Eisberg) 
Standort: Shenzhen, Guangdong. Beschreibung: Fügen Sie die folgenden Daten entsprechend dem ID-Feld in das Wertefeld ein. 
ID-Wert 
----- ------  
1aa 
1 bb 
2 aaa 
2 bbb 
2 ccc 
Sie müssen das Ergebnis erhalten: 
ID-Wert 
------ -----------  
1 aa,bb 
2 aaa, bbb, ccc 
Das heißt: nach ID gruppieren, Summe der Werte ermitteln (String-Addition) 
*/ 
--1. In SQL2000 können Sie nur benutzerdefinierte Funktionen verwenden, um die Aufgabe „create table tb(id int, value varchar(10))“ zu lösen. 
in tb-Werte einfügen (1, 'aa') 
in tb-Werte einfügen (1, 'bb') 
in tb-Werte einfügen (2, „aaa“) 
in tb-Werte einfügen (2, 'bbb') 
in tb-Werte einfügen (2, „ccc“) 
gehen 
 
Funktion erstellen dbo.f_str(@id varchar(10)) gibt varchar(1000) zurück 
als 
beginnen 
 Deklarieren Sie @str varchar(1000) 
 Wählen Sie @str = isnull(@str + ',' , '') + cast(Wert als varchar) aus tb, wobei id = @id 
 return @str 
Ende 
gehen 
 
--Rufen Sie die Funktion „Select ID, Wert = dbo.f_str(id)“ aus der TB-Gruppe nach ID auf. 
 
Löschfunktion dbo.f_str 
Drop-Tabelle tb  
 
--2. Methode zum Erstellen einer Tabelle tb(id int, value varchar(10)) in sql2005 
in tb-Werte einfügen (1, 'aa') 
in tb-Werte einfügen (1, 'bb') 
in tb-Werte einfügen (2, „aaa“) 
in tb-Werte einfügen (2, 'bbb') 
in tb-Werte einfügen (2, „ccc“) 
gehen  
Wählen Sie ID, [Wert] = Zeug ((Wählen Sie ',' + [Wert] von tb t, wobei ID = tb.id für XML-Pfad('')), 1, 1, '') 
von tb 
nach ID gruppieren  
Drop-Tabelle tb 
  
--3. Verwenden Sie den Cursor, um Daten zusammenzuführen. Erstellen Sie die Tabelle tb (id int, value varchar (10)). 
in tb-Werte einfügen (1, 'aa') 
in tb-Werte einfügen (1, 'bb') 
in tb-Werte einfügen (2, „aaa“) 
in tb-Werte einfügen (2, 'bbb') 
in tb-Werte einfügen (2, „ccc“) 
gehen 
deklariere @t table(id int,value varchar(100)) - definiere Ergebnismengentabellenvariable - definiere Cursor und Mergeprozess deklariere my_cursor Cursor lokal für 
wähle ID, Wert aus TB 
Deklarieren Sie @id_old int, @id int, @value varchar(10), @s varchar(100) 
öffne my_cursor 
hol my_cursor in @id , @value 
wählen Sie @id_old = @id , @s='' 
während @@FETCH_STATUS = 0 
beginnen 
  wenn @id = @id_alt 
    Wählen Sie @s = @s + ',' + Cast(@value als varchar) 
  anders 
   beginnen 
    @t-Werte einfügen(@id_old, stuff(@s,1,1,'')) 
    Wählen Sie @s = ',' + cast(@value as varchar), @id_old = @id 
   Ende 
  hol my_cursor in @id , @value 
ENDE 
@t-Werte einfügen(@id_old, stuff(@s,1,1,'')) 
schließe my_cursor 
my_cursor freigeben 
 
wähle * aus @t 
Drop-Tabelle tb

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • So teilen und führen Sie mehrere Werte in einem einzigen Feld in MySQL zusammen
  • Implementierungsschritte für MySQL-Zusammenführungsergebnisse und horizontale Spleißfelder
  • Analyse der MySQL Union Merge-Abfragedaten und der Verwendung von Tabellenalias und Feldalias
  • MySQL-Konvertierung von Spalten in Zeilen, Methode zum Zusammenführen von Feldern (unbedingt lesen)
  • Gruppenzeichenzusammenführung SQL-Anweisung führt eine der Zeichenfolgen nach einem bestimmten Feld zusammen (einfache Zusammenführung)
  • Ein Beispiel für das Zusammenführen eines Feldwertes in SQL Server
  • So führen Sie zwei Felder in MySQL zusammen

<<:  Spezifikationen für Hyperlink-Symbole: Verbessern Sie die Lesbarkeit von Artikeln

>>:  Verwendung von Docker UI, einem Docker-Visualisierungsverwaltungstool

Artikel empfehlen

Beispielcode zur Realisierung des Ladeeffekts der B-Station mit CSS+SVG

Schwierigkeit Erstellung von zwei Masken für SVG-...

Vollständige Analyse der MySQL-Datentypen

Datentyp: Die grundlegenden Regeln, die definiere...

Abkürzung für HTML DOCTYPE

Wenn Ihr DOCTYPE wie folgt ist: Code kopieren Der ...

CSS3 erzielt einen coolen Karusselleffekt mit geschnittenen Bildern

Heute lernen wir, wie man mit CSS eine coole Bild...

Tutorial zur Installation der mysql5.7.36-Datenbank in einer Linux-Umgebung

Download-Adresse: https://dev.mysql.com/downloads...

Zusammenfassung von fünf Befehlen zum Überprüfen des Swap-Speichers in Linux

Vorwort Unter Linux können zwei Arten von Swap-Sp...

MySQL count: ausführliche Erklärung und Funktionsbeispielcode

Detaillierte Erklärung der MySQL-Anzahl Die Funkt...

Ein Artikel zeigt Ihnen, wie Sie den Watch-Listener von Vue verwenden

Inhaltsverzeichnis Hörer beobachten Format Richte...

Hintergrundbild-Cache unter IE6

Fehler beim Flackern des CSS-Hintergrundbilds in ...

Implementierung der Änderung von Konfigurationsdateien im Docker-Container

1. Betreten Sie den Container docker run [Option]...