Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

sql para separar uma string do nome de uma pessoa e produzir as iniciais


Isso deve funcionar para as combinações "Nome Sobrenome" e "Nome Nome do Meio Sobrenome".
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

Claro, se os usuários tiverem um espaço em um de seus nomes por algum motivo, você terá um problema ao analisar isso, mas suspeito que esse seria o caso de qualquer maneira ao não armazenar seus nomes em campos separados.