Вы можете использовать regexp_substr()
:
select replace(replace(regexp_substr(name, ',([^,]+)\]$'), ',', ''), ']', '') as last_name
Или использовать regexp_replace()
:
select regexp_replace(name, '^(.*,|[\[a-zA-Z]+)([^,]*)\]$', '\2')
Здесь - это скрипта db <>.
Следует отметить, что хранить несколько значений в строке - плохая идея. SQL и Oracle имеют много лучших решений, чем перегрузка определения строки.