23rd Jun 2022 3 Leseminuten Extrahieren von Daten aus einem String: SPLIT_PART in PostgreSQL Ignacio L. Bisso PostgreSQL SQL-Textfunktionen Inhaltsverzeichnis Warum sollten Sie String-Funktionen in Ihrer Datenbank verwenden? Extrahieren einer Teilzeichenkette aus einer Zeichenkette mit PostgreSQL SPLIT_PART Erfahren Sie mehr über SQL String-Funktionen Lernen Sie, wie man split_part in PostgreSQL verwendet, um Daten aus Strings zu extrahieren. Bei der Arbeit mit Textwerten möchten wir oft Teile einer Zeichenkette extrahieren. Ein häufiges Beispiel ist, wenn wir einen vollständigen Namen haben und nur den Nachnamen abrufen müssen. In diesem Artikel wird untersucht, wie dies mit split_part in PostgreSQL möglich ist, d.h. mit einer stringbezogenen Funktion, die zum Extrahieren einer Teilzeichenkette verwendet werden kann. Warum sollten Sie String-Funktionen in Ihrer Datenbank verwenden? Es gibt viele Gründe, warum Sie SQL-String-Funktionen wie split_part in PostgreSQL in Ihrer Datenbank verwenden sollten, aber der Hauptgrund ist, dass Sie häufige Probleme mit der Datenqualität angehen wollen. In einem anderen Artikel mit dem Titel Wie man mit unerwünschten Zeichen in SQL umgeht haben wir einen Blick darauf geworfen, wie gängige SQL-String-Funktionen uns helfen können, die Qualität unserer Daten zu kontrollieren. In diesem Artikel konzentrieren wir uns hauptsächlich auf die Extraktion von Teilen einer Zeichenkette zur weiteren Analyse. Zum besseren Verständnis arbeiten wir mit einer Tabelle mit Beispieldaten aus dem Gesundheitswesen, die von einem Arzt erstellt wurde, der alle seine Patienteninformationen in dieser einzigen Tabelle speichert. Die Tabelle enthält den vollständigen Namen des Patienten, das Datum des Arztbesuches, die Diagnose des Arztes, die vom Arzt vorgeschlagene Behandlung und die vom Arzt verschriebenen Medikamente. Jedes Mal, wenn ein Patient seine Praxis besucht, legt der Arzt einen neuen Datensatz an und gibt seine Notizen manuell in die Datenbank ein. Wir werden uns hauptsächlich auf die Spalte drugs_in_receipt konzentrieren. Wenn wir uns die Datenbank unten ansehen, sehen wir in dieser Spalte eine durch Kommata getrennte Liste von Medikamenten. Full_Name date diagnostic treatment Drugs_in_receipt John Smith ’03/04/2016′ Flu rest “aspirin, paracetamol” Mary Deep ’10/11/2016′ Food Poisoning Rest & diet “penicillin,paracetamol” Agnes Jason ’03/12/2016′ flu rest “aspirin, paracetamol” Johnny SMITH ’15/03/2017′ Food Poisoned Rest & diet “penicillin,paracetamol” AGNES Jason ’19/072017′ angina Rest and don’t speak “amoxicillin” Peter Duckerz ’10/10/2017′ Flu Rest “paracetamol” Extrahieren einer Teilzeichenkette aus einer Zeichenkette mit PostgreSQL SPLIT_PART Angenommen, das erste Medikament in jeder Liste ist das Hauptmedikament, das der Patient einnehmen muss, und unser Arzt möchte das Hauptmedikament aus jeder Liste in der Spalte drugs_in_receipt extrahieren. In diesem Feld wird eine Liste der vom Arzt für jeden Fall verschriebenen Medikamente gespeichert. Wie wir bereits erwähnt haben, sind diese Medikamentennamen durch Kommas getrennt, wie z.B. "Aspirin, Paracetamol". Wir werden die PostgreSQL-Funktion split_part verwenden, um nur den ersten Medikamentennamen aus jedem Datensatz zu extrahieren. Hier ist die Abfrage, die wir verwenden werden: SELECT split_part(drugs_in_receipt, ',',1) as first_medicine FROM patient_data Die PostgreSQL-Funktion split_part benötigt drei Argumente. Das erste ist der Name des Feldes - in diesem Fall drugs_in_receipt. Das zweite Argument ist das Trennzeichen (ein Komma), und das dritte ist die Position des gewünschten Elements. In unserem Beispiel wollen wir das erste Element der Liste, also geben wir als drittes Argument 1 an. first_medicine “aspirin “penicillin “aspirin “penicillin “amoxicillin” “paracetamol” Wenn wir uns das Ergebnis genau ansehen, können wir vor jedem Medikamentennamen ein öffnendes Anführungszeichen erkennen. Wie können wir dieses entfernen? In einem unserer anderen Artikel haben wir gelernt, wie Sie die SQL-Funktion TRIM verwenden können, um unerwünschte Zeichen zu entfernen. Für unsere Zwecke geben wir an, was trim entfernen soll - die doppelten Anführungszeichen. SELECT trim( split_part( drugs_in_receipt , ',' , 1) , ' “” ') FROM patient_data first_medicine aspirin penicillin aspirin penicillin amoxicillin paracetamol So! Das war doch ganz einfach, oder? Erfahren Sie mehr über SQL String-Funktionen Die PostgreSQL-Funktion split_part ist eines der wichtigsten Werkzeuge für die Manipulation von String-Einträgen in Ihrer Datenbank. Aber sie ist nur eine von vielen anderen nützlichen Funktionen, die Sie lernen sollten, wenn Sie SQL beherrschen wollen. Zu diesem Zweck sollten Sie sich unseren Standard-SQL-Funktionen Kurs. Testen Sie ihn noch heute kostenlos! Tags: PostgreSQL SQL-Textfunktionen