Настройка
Таблица mysql с именем «mytable» имеет поле VARCHAR «data».
Поле содержит строку в формате:
name1'value1''name2'value2'' ... nameN''valueN
Мне известно, что эти данные денормализованы - меня заставили использовать 'в качестве разделителя, поскольку это единственный символ, который не допускается в качестве имени или значения.
Вот некоторые примеры данных:
one'.6332''two'.4231''three'.343''four'.034
two'.4332''four'.033''five'.043
four'.2323''seven'.3409''nine'.003
Проблема
Я пытаюсь выбрать строки из "mytable" на основе пары имя / значение. Например, я хотел бы выбрать все строки, которые в своем поле данных имеют имя «четыре» и соответствующее значение меньше .1. (Это должно вернуть строки 1 и 2).
Я бы хотел сделать это за один шаг. Я понимаю, что могу денормализовать данные и довольно легко сделать это таким образом, но я бы предпочел этого не делать. Эта операция будет выполняться не более чем на 500 строках, поэтому я не сильно обеспокоен ее производительностью.
Для входных данных $ name и $ value я предполагаю, что решение будет выглядеть примерно так:
SELECT * FROM mytable WHERE
TO_INT(reg_ex(<crazyregex which selects $name>, data)) < $value
Проблема в том, что я не знаю, как это сделать.
Надеясь, что кто-нибудь может помочь. Спасибо!