Heim >Datenbank >MySQL-Tutorial >Wie teile ich eine einzelne Namensspalte in SQL in Vor- und Nachnamenspalten auf?

Wie teile ich eine einzelne Namensspalte in SQL in Vor- und Nachnamenspalten auf?

DDD
DDDOriginal
2025-01-13 10:23:42997Durchsuche

How to Split a Single Column of Names into First and Last Name Columns in SQL?

Teilen Sie einen einzelnen Spaltenwert in mehrere Spaltenwerte auf

Frage:

Sie möchten eine einzelne Spalte mit einer Namensliste in mehrere Spalten mit Vor- und Nachnamen umwandeln.

Beispiel:

<code class="language-sql">姓名
------------
abcd efgh
ijk lmn opq
asd j. asdjja
asb (asdfas) asd
asd</code>

Erwartete Ausgabe:

<code class="language-sql">名             姓
----------------------------------
abcd                     efgh
ijk                      lm opq
asd                      asdjja
asb                      asd
asd                      NULL</code>

Lösung:

Die vorherige Methode verarbeitet möglicherweise nicht alle Namensformate korrekt. Hier ist eine verbesserte Lösung mit T-SQL:

<code class="language-sql">SELECT 
  CASE
    WHEN name LIKE '% %' THEN SUBSTRING(name, 1, CHARINDEX(' ', name) - 1)
    ELSE name
  END AS first_name,
  CASE
    WHEN name LIKE '% %' THEN SUBSTRING(name, CHARINDEX(' ', name) + 1, LEN(name))
    ELSE NULL
  END AS last_name
FROM 
  YourTable;</code>

Dieser SQL-Code prüft zunächst, ob Leerzeichen im Namen vorhanden sind. Falls vorhanden, verwendet es die Funktion SUBSTRING, um den Teil vor dem Leerzeichen als Vornamen und den Teil nach dem Leerzeichen als Nachnamen zu extrahieren. Wenn der Name keine Leerzeichen enthält, wird der gesamte Name als Vorname verwendet und der Nachname ist NULL. Dies ist robuster als die vorherige Lösung und verarbeitet verschiedene Namensformate besser.

Das obige ist der detaillierte Inhalt vonWie teile ich eine einzelne Namensspalte in SQL in Vor- und Nachnamenspalten auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn