Le set-upopérations d'expression régulière MySQL
Une table MySQL appelée "mytable" a un champ VARCHAR "data".
Le champ contient une chaîne dans le format de:
name1'value1''name2'value2'' ... nameN''valueN
Je suis au courant de ces données est dénormaliser - j'ai été forcé d'utiliser "comme délimité puisque c'est le seul caractère n'est pas autorisé en tant que nom ou valeur.
Voici quelques exemples de données:
one'.6332''two'.4231''three'.343''four'.034
two'.4332''four'.033''five'.043
four'.2323''seven'.3409''nine'.003
Le problème
Je suis en train de sélectionner des lignes de "mytable" basé sur une paire nom/valeur. Par exemple, je voudrais sélectionner toutes les lignes qui dans leur champ de données, ont un nom de «quatre» et une valeur correspondante inférieure à .1. (Cela devrait retourner les lignes 1 et 2).
Je voudrais le faire en une seule étape. Je me rends compte que je peux dénormaliser les données et assez facilement le faire de cette façon, mais je préférerais ne pas le faire. Cette opération ne se fera que sur 500 lignes maximum, donc je ne m'inquiète pas trop de ses performances.
Pour les entrées de nom $ et la valeur de $, je suppose la solution ressemblerait à quelque chose comme:
SELECT * FROM mytable WHERE
TO_INT(reg_ex(<crazyregex which selects $name>, data)) < $value
Le problème est, je ne connais pas les détails de la façon de le faire.
En espérant que quelqu'un puisse vous aider. Merci!
Est-il vraiment pas d'autre moyen façon de faire des expressions régulières dans MySQL autres que d'une manière qui retourne 1 ou 0? –