Я только что обнаружил странное поведение предложения базы данных "упорядочить по". При сравнении строк я ожидал, что некоторые символы, такие как «[» и «_», будут больше латинских символов / цифр, таких как «I» или «2», учитывая их порядок в таблице ASCII. Однако результаты сортировки из предложения "order by" базы данных отличаются от моих ожиданий. Вот мой тест:
SQLite версии 3.6.23
Введите ".help" для получения инструкций
Введите операторы SQL, оканчивающиеся на «;»
sqlite> создать таблицу продуктов (имя varchar (10));
sqlite> вставить в значения продуктов ('ipod');
sqlite> вставить в значения товаров ('iphone');
sqlite> вставить в значения продуктов ('[apple]');
sqlite> вставить в значения товаров ('_ ipad');
sqlite> выберите * из списка продуктов по названию asc;
[Яблоко]
_ipad
iphone
Сделать ставку
select * from products order by name asc;
name
...
[B@
_ref
123
1ab
...
Это поведение отличается от сравнения строк в Java (которое стоило мне времени, чтобы найти эту проблему). Я могу проверить это в как SQLite 3.6.23, так и Microsoft SQL Server 2005. Я выполнил поиск в Интернете, но не могу найти соответствующую документацию. Может ли кто-нибудь пролить мне свет на это? Это стандарт SQL? Где я могу найти информацию об этом? Заранее спасибо.