sql >> Databáze >  >> RDS >> Sqlserver

sql pro rozebrání řetězce jmen osob a výstup iniciál

To by mělo fungovat pro kombinace "Jméno Příjmení" a "Křestní jméno Prostřední příjmení".

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

Samozřejmě, pokud mají uživatelé mezeru v jedno z jejich jmen z nějakého důvodu budete mít problém to rozebrat, ale mám podezření, že by tomu tak bylo tak jako tak, když svá jména neukládáte do samostatných polí.



  1. Nejlepší řešení DBaaS pro MySQL

  2. Jednotky data a času v MySQL (úplný seznam)

  3. Oracle SQL Date to Long a naopak

  4. Vrácení oprávnění sloupců z propojeného serveru v SQL Server (příklady T-SQL)