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

Was Sie über die automatische ID-Inkrementierung in MySQL wissen müssen

Einführung: Wenn wir MySQL zum Erstellen einer Ta...

jQuery implementiert die Anzeige und Ausblendung von Anzeigenanimationen

Wir sehen oft, dass Anzeigen nach ein paar Sekund...

Eine kurze Einführung in die Basiskomponenten der VUE uni-app

1. Scroll-Ansicht Beim vertikalen Scrollen müssen...

Detaillierte Erklärung der Nginx-Konfigurationsdatei

Die Hauptkonfigurationsdatei von Nginx ist nginx....

jQuery implementiert die Funktion zum Ziehen von Bildern mit der Maus

In diesem Beispiel wird jQuery verwendet, um eine...

VMware Workstation 12 installiert Ubuntu 14.04 (64 Bit)

1. Installationsumgebung Computermodell: Lenovo Y...

Vue implementiert eine Zeit-Countdown-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Vue implementiert ein Suchfeld mit einer Lupe

In diesem Artikel erfahren Sie, wie Sie mit Vue e...