Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 09.04.2018, 16:19   #1
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 152
Репутация: 10
По умолчанию натуральная сортировка

есть sql запрос
Код:

SELECT Stand.*, Gost.Gost_ID AS GostID, Gost.Name AS GostName,
Okp.Okp_ID AS OkpID,Okp.Klass,Okp.Naim FROM Standart.dbo.Stand, Standart.dbo.Gost, Standart.dbo.Okp
WHERE Stand.Gost_Id=Gost.Gost_Id AND Stand.Okp_Id=Okp.Okp_Id and Stand.Name = 'Резистор'
order by 
case patindex ('%м[0-9]%',Stand.Mark ) When 0 Then Mark 
else left(Stand.Mark ,patindex ('%м[0-9]%',Stand.Mark )-1) end ,
case patindex ('%м[0-9]%',Stand.Mark ) When 0 then 0 
else cast(substring(Stand.Mark ,patindex ('%м[0-9]%',Stand.Mark )+1,
case patindex ('%[^0-9]%',substring(Stand.Mark ,patindex ('%м[0-9]%',Stand.Mark )+1,1000)) When  0 Then 1000
else patindex ('%[^0-9]%',substring(Stand.Mark ,patindex ('%м[0-9]%',Stand.Mark )+2,1000)) end) as int) end

который сортирует текст такого типа:
текст 5
текст 6
текст 10
как отсортировать текст типа:
текст 2
текст 2.2
текст 2.10?
или вообще текст с разделителями '-', ',', 'x'?
Etsareva вне форума   Ответить с цитированием
Старый 09.04.2018, 16:49   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,107
Репутация: 6385
По умолчанию

Так же как и в приведенном запросе - строить громоздкое вычисляемое поле и по нем сортировать. И работать в конце концов не будет потому, что еще другие ситуации всплывут и приехали ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 09.04.2018, 16:57   #3
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 152
Репутация: 10
По умолчанию

понятно...
Etsareva вне форума   Ответить с цитированием
Старый 09.04.2018, 17:11   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,107
Репутация: 6385
По умолчанию

Попробуй функцию сделать возвращающую строку в нужном виде, по крайней мере не так громоздко и возможностей больше чем в запросе. Скорость упадет к сожалению
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 09.04.2018, 17:12   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,615
Репутация: 5352
По умолчанию

судя по всему речь идёт о MS SQL server.

Если наплевать на производительность, то можно
1) сделать вычисляемую функцию, которая возвращает новую строку
(например, как я уже предлагал в одной из десятка ваших тем - ТУТ)
2) использовать эту функцию в качестве условия в SORT BY


Аватар, мысли то сходятся!
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 22:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32


14:10.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru