У меня есть строка, которая определена как одно или несколько разделенных точками целых чисел, таких как 12345, 543.21, 109.87.654 и т. Д. Я храню значения в базе данных MySQL, а затем мне нужно найти строки, которые сравниваются с предоставленной значение. Я хочу выбрать строки, сравнивая каждый компонент строки с соответствующим компонентом входной строки. Со стандартным сравнением строк в MySQL вот где это ломается:
mysql> SELECT '543.21' >= '500.21'
-> 1
mysql> SELECT '543.21' >= '5000.21'
-> 1
Это естественно, потому что сравнение строк - это словарное сравнение, которое не учитывает длину строки, но я хочу получить результат 0 для второго запроса.
Есть ли способ дать некоторую подсказку MySQL о том, как их сравнивать? Иначе есть ли способ намека на ActiveRecord, как это сделать для меня? Сейчас лучшее решение, которое я нашел, - это выбрать все строки и затем отфильтровать результаты, используя методы Ruby split
и reject
. (Весь набор данных довольно мал и вряд ли сильно вырастет в обозримом будущем, поэтому это разумный вариант, но если есть более простой способ, который я не рассматриваю, я был бы рад узнать это.)