Упорядочивание по буквам и игнорирование скобок

0

Как я могу сделать подбор заказов по буквам и игнорировать круглые скобки?

SELECT name FROM table1 ORDER BY name;

Он возвращает:

(stu)
abc
suv

Мне бы хотелось:

abc
(stu)
suv
Теги:

3 ответа

1
Лучший ответ

Удалите круглые скобки перед заказом:

SELECT name
FROM table1
ORDER BY REPLACE(name, '(', '');

Однако это не позволяет использовать какой-либо индекс в столбце name, поэтому производительность не будет хорошей, если таблица большая.

Если в скобках может быть только одна пара в начале и конце, вы можете немного увеличить производительность, просто удалив первый символ, если это скобки:

SELECT name
FROM table1
ORDER BY CASE WHEN LEFT(name, 1) = '(' THEN SUBSTR(name, 2) ELSE name END;
  • 0
    Таблица имеет 4000-5000 строк. Есть ли другое решение для подобного выбора?
  • 0
    Это не большая таблица, производительность будет приемлемой. Второй запрос в моем ответе может быть немного быстрее, поэтому попробуйте оба и выберите то, что вам нравится. Если вы действительно хотите повысить производительность, вам придется создать вычисляемый столбец с удаленными скобками и создать индекс для него, а затем использовать его для упорядочения.
0

попробуйте что-то вроде этого: SELECT name FROM table1 ORDER BY REPLACE(name, '(', '');

0

Пытаться:

SELECT name FROM table1 ORDER BY REPLACE(REPLACE(name, '(', ''), ')', '');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню