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

sql for at skille en streng af en persons navn fra hinanden og udlæse initialerne

Dette burde fungere for både "Fornavn Efternavn" og "Fornavn Mellemnavn Efternavn" kombinationer.

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

Selvfølgelig, hvis brugerne har et mellemrum i et af deres navne af en eller anden grund vil du have et problem med at analysere dette, men jeg formoder, at det ville være tilfældet alligevel, når du ikke gemmer dine navne i separate felter.



  1. Er det bedre at bruge en tom værdi som '' eller som NULL?

  2. effektiv måde at implementere personsøgning på

  3. Fejl ugyldig inputsyntaks for heltal for et ikke-heltal?

  4. Udfør et stort SQL-script (med GO-kommandoer)