Есть запрос:
| Код | SELECT * FROM ( SELECT -1 AS disrefid, ' -- ALL --' AS disdesc UNION ALL SELECT NULL AS disrefid, ' == None ==' AS disdesc UNION ALL SELECT disrefid, disdesc FROM c_manager.dsl_def_discipline)AS s ORDER BY 2
|
Второе поле - varchar. Результат сортируется не правильно, и непонятно почему. По идее, первые две строки резулттата должны быть ' -- ALL--' и ' == None ==', т.к. в таблице обычные текстовые данные, не начинающиеся с пробелов. Но результат выглядит так, как будто ORDER BY сначала обрезал ' --' и ' ==', а потом уже отсортировал. Т.е. результат такой, как будто вместо ' -- ALL --' и ' == None ==' там 'ALL' и 'None'. Обьясните плиз, почему так получается. В этом случае я пробелму решил так
| Код | SELECT -1 AS disrefid, ' -- ALL --' AS disdesc UNION ALL SELECT NULL AS disrefid, ' == None ==' AS disdesc UNION ALL (SELECT disrefid, disdesc FROM c_manager.dsl_def_discipline ORDER BY 2)
|
Но все-таки хотелось бы выяснить, почему не правильно работает первый вариант, что бы как-нить не наступить на грабли. |