devaka
@devaka
технарь

Почему получаются разные результаты сравнения одних и тех же строк в PHP и MySQL?

Столкнулся с проблемой, когда mysql отсортировал строки не так, как php. Возможно, это где-то настраивается?

Пример:
96 ` Back quote
97 a Lower case alphabetic character

MySQL:
SELECT IF( '`' > 'a', 1, 0 )

Дает в результате 1.

PHP:
var_dump('`' > 'a');

Дает в результате bool(false) - 0

Еще один тест, который более понятно описывает проблему:
mysql> select ord('`'), ord('a'), if('`' > 'a', 1, 0);
+----------+----------+---------------------+
| ord('`') | ord('a') | if('`' > 'a', 1, 0) |
+----------+----------+---------------------+
|       96 |       97 |                   1 |
+----------+----------+---------------------+


Почему 96 больше, чем 97?
  • Вопрос задан
  • 347 просмотров
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
смотрите collation вашей базы и таблиц, если что-то вроде utf8_general_ci, то _ci означает Case-Insensitive и сравнение скорее всего происходит как '`' и 'A' (65)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы