2014-02-17 2 views
1

Используя командную строку MySQL, я хочу выбрать все строки, содержащие определенную дробную часть числа.mysql найти строки с дробной частью числа

У меня есть поле типа FLOAT, называемое приоритетом & Я хочу найти все строки, где приоритет X.2, где X может быть любым целым числом.

Есть ли способ использовать функцию MOD или FLOOR для извлечения «.2» в запросе?

Я пробовал:

SELECT * from table 
WHERE priority-FLOOR(priority) = .2 *(note the decimal point before the 2)* 

но он возвращает пустой набор, когда я знаю, что есть по крайней мере, 100 строк, содержащих приоритет Х.2

Благодаря

ответ

2

Что об использовании LIKE в MySQL?

SELECT * FROM table WHERE priority LIKE %.2%

+0

Я был в шоке, но он работает: http://sqlfiddle.com/#!2/6d39a/1 –

+0

Да, я долго задерживался на этом и искал недели. Это имеет какое-то отношение к типу данных FLOAT (не совсем точно), а затем в один прекрасный день из-за отчаяния я пробовал LIKE, и он работал чудесным образом. :) – J2D8T

1

Число с плавающей точкой, как известно, непостоянное работать. Вот почему SQL предлагает тип данных decimal, который является фиксированной длиной.

Делайте то, что вы хотите с между:

SELECT * 
from table 
WHERE priority-FLOOR(priority) between 0.15 and 0.25 

Рассмотрим хранение приоритет в виде десятичной дроби вместо числа с плавающей точкой.

Если у вас есть «глубокие» приоритеты, такие как 1.22, что вы пытаетесь избежать, то делать:

WHERE priority-FLOOR(priority) between 0.195 and 0.205 

Диапазон может быть еще более узким, если вам нужно.

Смежные вопросы