Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

sql, um eine Zeichenfolge eines Personennamens zu zerlegen und die Initialen auszugeben

Dies sollte sowohl für die Kombinationen „Vorname Nachname“ als auch „Vorname Zweiter Vorname Nachname“ funktionieren.

DECLARE @name AS NVARCHAR(50) 
SET @name = 'Firstname Middle Lastname' 


SELECT SUBSTRING(@name, 1, 1) +     --First initial
    SUBSTRING(@name, CHARINDEX(' ', @name) + 1, 1) +    --Middle/Last initial
    CASE WHEN 0 <>  CHARINDEX(' ', @name, CHARINDEX(' ', @name) + 1) -- More than two words 
        THEN SUBSTRING(@name, CHARINDEX(' ', @name, CHARINDEX(' ', @name) + 1) + 1, 1)  --Last initial
    ELSE '' --Have to add empty string to avoid NULLing entire result
    END

Natürlich, wenn Benutzer ein Leerzeichen in haben Wenn Sie aus irgendeinem Grund einen ihrer Namen haben, werden Sie ein Problem haben, dies zu analysieren, aber ich vermute, dass dies sowieso der Fall wäre, wenn Sie Ihre Namen nicht in separaten Feldern speichern.