PostgreSQL. Разъединить 2 слова (Имя, Фамилия) на 2 столбца, использую substring

Рейтинг: 0Ответов: 2Опубликовано: 03.02.2023

Помогите, пожалуйста. Нужно разъединить 2 слова (Имя, Фамилия) на 2 столбца, использую substring. Моя попытка:

select carid,
substring(driverfullname from position (driverfullname in ' ')) || ' ' || left (substring (driverfullname from 1 for position (driverfullname in ' ')), 1) as first_name,
substring(driverfullname from position (' ' in driverfullname)) || ' ' || right (substring (driverfullname from 1 for position (driverfullname in ' ')), 1) as last_name
from car;

Результат запроса

Ответы

▲ 1
select 
    carid,
    split_part(driverfullname ,' ', 1) as first_name,
    split_part(driverfullname ,' ', 2) as last_name
from car;

Пример:

SELECT 
    split_part('Джеффри Лесли Крэнстон', ' ', 1) as first_name, 
    split_part('Джеффри Лесли Крэнстон', ' ', 2) as middle_name, 
    split_part('Джеффри Лесли Крэнстон', ' ', 3) as last_name
first_name|middle_name|last_name|
----------+-----------+---------+
Джеффри   |Лесли      |Крэнстон |

Или можно так

SELECT 
    split_part('Джеффри Лесли Крэнстон', ' ', 1) || ' ' || split_part('Джеффри Лесли Крэнстон', ' ', 2) as name,
    split_part('Джеффри Лесли Крэнстон', ' ', 3) as last_name
name         |last_name|
-------------+---------+
Джеффри Лесли|Крэнстон |
▲ 0
WITH 
sourcedata AS (
  SELECT 'Василий Пупкин' AS value
  )
SELECT substring ( value FROM '^\S*' ) AS firstname,
       substring ( value FROM '\S*$' ) AS lastname
FROM sourcedata
firstname lastname
Василий Пупкин

fiddle