SELECT * FROM mytable WHERE LOWER(JSON_EXTRACT(metadata, "$.title")) = JSON_QUOTE("hello world") и SELECT * FROM mytable WHERE LOWER(metadata->"$.title") = JSON_QUOTE("hello world") работи, но не съм сигурен защо трябва да използвам JSON_QUOTE когато използвате LOWER вместо да не се нуждаете от него за точно търсене.
Ако някой може да обясни защо, с удоволствие ще го отбележа като отговор.