'Extracting the first name, middle initial, and last name from a Full name column
I am learning SQL and I'm trying to extract the First Name, Last Name, and Middle Initial (if there is any) from a Full Name column. I was able do do this with the following query, but I would like to simplify the query by using variables.
What is the way to use variables to simplify the below?
SELECT DISTINCT trim(PROV_NAME) as FullName,
CHARINDEX(' ', trim(prov_name)) as FirstSpaceIndex,
LEN(trim(prov_name)) as FullNameLength,
SUBSTRING(trim(PROV_NAME), 1, CHARINDEX(' ', trim(prov_name))) AS FirstNameExtracted,
RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name))) as RestOfName,
LEN(RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name)))) AS RestOfNameLength,
CHARINDEX(' ', RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name)))) as FirstSpaceInRestOfName,
LEFT(RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name))), CHARINDEX(' ', RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name))))) as MiddleInitialExtracted,
RIGHT(RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name))), LEN(RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name)))) - CHARINDEX(' ', RIGHT(trim(prov_name), LEN(trim(prov_name)) - CHARINDEX(' ', trim(prov_name))))) as LastNameExtracted
FROM ARCHIVE
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
