Выбрать по определенным цифрам после десятичной точки двух столбцов - PullRequest
0 голосов
/ 06 января 2019

Мой стол выглядит так:

id  |  firstNumber  |  secondNumber
1   |    10.1234    |    15.3321
2   |    105.338    |    185.9921
3   |    10.1255    |    15.3368
4   |    50.5050    |    99.99
5   |    10.12345   |    17.3677

** Числа хранятся как двойные

Предположим, мне дан ввод для 2 чисел: например, 10.123343 и 15.3335344 для сравнения.

Как выбрать все строки с одинаковым номером до определенной цифры после десятичной точки? И как сделать это для 2 столбцов вместе? В моем примере, если мне нужны числа с точностью до 2 цифр после точки для обоих чисел (firstNumber и secondNumber), я должен получить строки 1 и 3.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Учитывая разъяснения из комментариев, звучит так, будто вы хотите что-то вроде

SELECT * FROM table WHERE ROUND(firstNumber, 2) = 10.12 AND ROUND(secondNumber, 2) = 15.33;

Если вы хотите, чтобы числа совпадали на основе усечения вместо округления, вы можете использовать FLOOR, как указано в ответе forpas .

0 голосов
/ 06 января 2019

С floor(number) вы получаете целую часть десятичного числа
а с floor(100 * number) вы получите часть десятичного числа, которую нужно сравнить на равенство до 2 десятичных цифр:

select t.* from tablename t
where 
    floor(100 * t.firstnumber) = floor(100 * 10.125666)
    and
    floor(100 * t.secondnumber) = floor(100 * 15.33838)

То же самое можно достичь с помощью truncate():

select t.* from tablename t
where 
    truncate(t.firstnumber, 2) = truncate(10.125666, 2)
    and
    truncate(t.secondnumber, 2) = truncate(15.33838, 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...