Quebrando pra ficar fácil:
select replace(initcap
(replace
(upper(‘pedro cortou o joelho’)
,’pedro’,’carlos’)
),
’carlos’,’marcelo’);
Indo por partes, feito Jack:
upper(‘pedro cortou o joelho’) -> Resultará em 'PEDRO CORTOU O JOELHO'
replace('PEDRO CORTOU O JOELHO', 'pedro', 'carlos') -> Continuará 'PEDRO CORTOU O JOELHO' visto que a função replace é CASE SENSITIVE
initcap('PEDRO CORTOU O JOELHO') -> Coloca a primeira letra de CADA PALAVRA em maíuscula, e as restantes em minúscula. 'Pedro Cortou O Joelho' é a resultante agora
replace('Pedro Cortou O Joelho', 'carlos', 'marcelo') -> Nada acontece. Não existe Carlos, e mesmo que existisse ele teria o C maiúsculo.
Resultado: 'Pedro Cortou O Joelho'