Удалить строки в скобках, преобразовать в карту и использовать карту ['key'], чтобы получить поля:
select m['ID'] as id, m['Value'] as value, m['Name'] as Name
from (select str_to_map(regexp_replace('ID(1001):10|Value(1002):8|Name(xyz):7','\\(.*?\\)',''),'\\|',':') as m
)s;
Результат:
id value name
10 8 7
Использование только регулярных выражений:
SELECT regexp_extract(t.col,'(?i)ID.*?:(\\d+)\\|',1) as ID,
regexp_extract(t.col,'(?i)Value.*?:(.?+)\\|',1) as Value,
regexp_extract(t.col,'(?i)Name.*?:(.?+)\\|*',1) as Name
FROM (SELECT 'ID(1001):10|Value(1002):8|Name(xyz):7' AS col) t;
Результат:
id value name
10 8 7