Запрос на сортировку поля так, что сначала идут строки, а затем числа - PullRequest
3 голосов
/ 30 июня 2010

У меня есть столбец, в котором содержатся числа или строки. Тип столбца varchar.

Обычно, когда мы сортируем его, используя строковое поле, сначала идут все числа, а затем начинаются строки. Но я хочу сначала все строки, а затем цифры.

TIA!

Ответы [ 4 ]

1 голос
/ 30 июня 2010

Вам придется написать это в двух отдельных запросах.Один для выбора чисел, другой для строк.Желательно, чтобы я создал второй столбец (один для чисел, один для строк), чтобы было проще и быстрее запускать эти два запроса.

0 голосов
/ 05 июля 2010

Рассматривали ли вы создание пользовательской функции сортировки ? Я никогда не использовал это сам, но это звучит как то, что вам нужно.

0 голосов
/ 05 июля 2010

Как насчет следующего (два запроса, как предложено выше):

select * from Table where LENGTH(trim(stringfield,"0123456789 ")) > 0; select * from table where LENGTH(trim(stringfield,"0123456789 ")) = 0;

Первый выбор должен возвращать только не числовые значения, а второй должен возвращать только числовые значения.

Для таблицы, содержащей смесь числовых и строковых данных, сначала выводятся строки, а затем цифры.

0 голосов
/ 30 июня 2010

Это сработало для меня ...

Select * from Table order by stringfield+0;

редактировать: http://www.sqlite.org/datatypes.html (точка 4.0)

ОБНОВЛЕНИЕ: Попробуйте это ....

select * from Table where LENGTH(trim(stringfield,"0123456789 ") )=0 union select * from table order by stringfield;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...