Еще одна идея для вас: я обнаружил, что REPLACE полезен для такого рода вещей, особенно когда шаблон сложный:
SELECT REPLACE(REPLACE(
'%mix_type% (%mix_num%)' /*template*/
,'%mix_type%', mix_type)
,'%mix_num%' , mix_num ) as description,
FROM acid_batch
WHERE mix_num < 10
Единственным недостатком является то, что вам нужно добавить столько REPLACE(
, сколько есть переменных для замены, но, по крайней мере, вам нужно иметь только одну переменную для каждой переменной, независимо от того, сколько раз она появляется в шаблоне. *
(ПРИМЕЧАНИЕ: использование «%» в качестве разделителя не имеет особого значения, это просто мое личное соглашение - вы можете выбрать другой шаблон, например, <mix_type>
или [mix_type]
)
Для этого конкретного случая это выглядит как перебор, но в некоторых случаях это может сделать вещи намного проще, например ::
template := 'bla bla %a% %b% %a%';
output := REPLACE(REPLACE(template
,'%a%', some_complex_expression)
,'%b%', b);
Сравните вышеприведенное с:
output := 'bla bla ' || some_complex_expression || ' ' || b || ' ' || some_complex_expression;