https://www.youtube.com/watch?v=tVQUsozKkyI

create table customers  (customer_name varchar(30));

insert into customers values ('Ankit Bansal')
,('Vishal Pratap Singh')
,('Michael'); 

Pasted image 20241122183445.png

WITH
CASE WHEN
LOCATE()
SUBSTRING()
LEFT()
RIGHT()

WITH cte as (
select 
	*, 
    length(customer_name) - length(replace(customer_name,' ','')) AS len,
    locate(' ',customer_name) AS space_1,
    locate(' ',customer_name,locate(' ',customer_name)+1) AS space_2
from customers
)
SELECT
	*,
    CASE WHEN len = 0 THEN customer_name 
    ELSE substring(customer_name,1,space_1-1) END AS First_name,
    CASE WHEN len<=1 THEN null
    ELSE substring(customer_name,space_1+1,space_2-space_1-1) END AS Middle_name,
    CASE WHEN len = 0 THEN null
    WHEN len = 1 then right(customer_name,space_1) 
    WHEN len = 2 THEN substring(customer_name,space_2+1)
    END AS last_name
FROM cte