Сравнение больших чисел в php и sql - PullRequest
0 голосов
/ 28 июля 2010

Мне нужно сравнить очень большое число в php (длиной 30 цифр) с 2 числами в моей базе данных. Какой хороший способ сделать это? Я пытался использовать float, но он недостаточно точен, и я не знаю хорошего способа использовать большие числа в php.

Ответы [ 5 ]

2 голосов
/ 28 июля 2010

Вы пробовали использовать сравнение строк?Просто убедитесь, что каждое число дополнено нулями.

mysql> select "123123123123123123456456456"<"123123123123123123456456457";
+-------------------------------------------------------------+
| "123123123123123123456456456"<"123123123123123123456456457" |
+-------------------------------------------------------------+
|                                                           1 | 
+-------------------------------------------------------------+

Проведите тест до 200+ символов, работает как шарм.

1 голос
/ 28 июля 2010

Проверка bcdcomp функция

0 голосов
/ 28 июля 2010

Если они очень большие, я бы даже сравнил их как строки.Во-первых, если один длиннее другого, он выигрывает.Если они имеют одинаковую длину, сравните цифра за цифрой слева направо - если две цифры отличаются, выигрывает число с большей цифрой.Это конечно для целых положительных чисел.

0 голосов
/ 28 июля 2010

Обработка больших чисел в PHP осуществляется с помощью одной из двух библиотек: GMP или BC Math.

Я сам этого не делал, так что, возможно, это не правильно, но я думаю, что вам нужно взять строковый результат из GMP или BC Math и вставить его в запрос. Убедитесь, что вы храните свои номера как bigint.

Интересный факт: вы можете подумать, что BigInt будет ограничен до 20 цифр, и вы будете правы, за исключением того факта, что он имеет Mysql Magic:

Вы всегда можете сохранить точное целочисленное значение в столбце BIGINT, сохранив его в виде строки. В этом случае MySQL выполняет преобразование строки в число, которое не требует промежуточного представления двойной точности.

0 голосов
/ 28 июля 2010

Вместо этого вы можете сравнить строки.

В зависимости от того, как вы извлекаете данные из базы данных, вы можете явно привести целое число к строковому типу в операторе SQL.

Кроме этого, в PHP есть несколько библиотек, которые обрабатывают большие целые числа, такие как BCMath и GMP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...