Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

sql per selezionare una stringa del nome di una persona e produrre le iniziali

Questo dovrebbe funzionare sia per le combinazioni "Nome Cognome" che "Nome Secondo Nome Cognome".

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

Naturalmente, se gli utenti hanno uno spazio in uno dei loro nomi per qualche motivo avrai un problema nell'analisi, ma sospetto che sarebbe comunque il caso quando non memorizzerai i tuoi nomi in campi separati.