Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

sql, aby oddzielić ciąg nazwisk osób i wypisać inicjały

Powinno to działać w przypadku kombinacji „Imię Nazwisko” i „Imię Drugie imię Nazwisko”.

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

Oczywiście, jeśli użytkownicy mają spację w jedno z ich imion, z jakiegoś powodu będziesz miał problem z przeanalizowaniem tego, ale podejrzewam, że i tak będzie w przypadku, gdy nie przechowujesz swoich imion w oddzielnych polach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zapisać wyniki zapytania wybierającego w tabeli tymczasowej?

  2. Przechowywanie i analiza dokumentów w systemie plików Windows za pomocą wyszukiwania semantycznego SQL Server — część 2

  3. Wybór ostatniej daty między dwiema kolumnami

  4. Python wywołuje procedurę składowaną sql-server z parametrem o wartości tabeli

  5. jak zmienić poziom izolacji?