Eu tenho duas condições que estão fazendo com que a instrução CASE não funcione conforme o esperado. Eu tentei mudar qual condição vem primeiro, mas ainda assim só prossegue com uma delas. Alguma sugestão?
Instrução CASE que retorna apenas o valor antes do primeiro '(' e substitui todas as instâncias de 'Metallic' por 'M' :
CASE
WHEN `order_option`.`value` LIKE '%(%)%' THEN SUBSTRING_INDEX(`order_option`.`value`,' (', 1)
WHEN `order_option`.`value` LIKE '%Metallic%' THEN REPLACE (`order_option`.`value`,'Metallic','M')
ELSE `order_option`.`value`
END AS `Option`,
Dados atuais
`value`
--------
Red Metallic (999)
Blue (745)
Resultados esperados
`Option`
--------
Red M
Blue
Agradeço antecipadamente!
Você não tem chance, além de mudar o texto do metallooc primeiro e também fazer um substing nele
Esquema (MySQL v8.0)
Consulta nº 1
Ver no DB Fiddle