Я вижу две проблемы здесь с вашим заказом. Во-первых, символ скобки лексиграфически меньше буквенно-цифровых символов, что не согласуется с тем, что вы хотите. Во-вторых, у вас есть проблема чувствительности к регистру с вашими книжными названиями. Это приводит к тому, что sBox
появляется больше лексиграфически, чем Web
, хотя прежняя буква появляется раньше в алфавите с точки зрения, нечувствительной к регистру.
Одним из способов получения заказа является использование двух условий. Первое условие разделяет названия книг, начиная с буквенно-цифровых заголовков, начиная с символов, подобных скобкам. Второе условие использует регистр, нечувствительный к регистру, по фактическому названию книги.
SELECT Book
FROM Library
ORDER BY CASE WHEN REGEXP_LIKE(SUBSTR(Book, 1, 1), '[^A-Za-z0-9]') THEN 0 ELSE 1 END,
LOWER(Book) DESC
На самом деле, возможно, более точный способ справиться с этим было бы проверить, если название книги начинается с какой-либо квадратные скобки этикетке, т.е. ^[.*]
:
ORDER BY CASE WHEN REGEXP_LIKE(Book, '^[[].*[]]') THEN 0 ELSE 1 END,
LOWER(Book) DESC
Вы, кажется, сортировка по имени таблицы ... – JohnHC
жаль, что я напечатал неверно "SELECT Book FROM Library ORDER BY Book desc" –
Ваш наблюдаемый результат не соответствует запросу. –