J'ai une chaîne qui est définie comme un ou plusieurs entiers séparés par des points tels que, 543.21, 12345 109.87.654, etc. Je suis stocker des valeurs dans une base de données MySQL et doivent trouver les lignes qui se comparent avec une valeur fournie. Ce que je veux, c'est sélectionner des lignes en comparant chaque composant de la chaîne au composant correspondant de la chaîne d'entrée. Avec comparaison de chaînes standard dans MySQL, voici où cela se décompose:ActiveRecord/MySQL Sélectionner l'état des composants Comparer cordes
mysql> SELECT '543.21' >= '500.21'
-> 1
mysql> SELECT '543.21' >= '5000.21'
-> 1
Ceci est naturel, car la comparaison de chaînes est une comparaison « dictionnaire » qui ne tient pas compte de la longueur de chaîne, mais je veux un 0 résultat sur la deuxième requête.
est-il un moyen de fournir une allusion à MySQL sur la façon de les comparer? Sinon, y a-t-il un moyen d'indiquer à ActiveRecord comment faire cela pour moi? À l'heure actuelle, la meilleure solution que j'ai trouvée est de sélectionner toutes les lignes et de filtrer les résultats en utilisant les méthodes split
et reject
de Ruby. (L'ensemble des données est très faible et ne risquent pas de se développer terriblement bien dans un avenir prévisible, il est donc une option raisonnable, mais s'il y a un moyen plus simple, je ne suis pas vu que je serais heureux de le savoir.)
Avez-vous besoin de ces points? – klew