Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 09.04.2018, 16:19   #1
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 87
Репутация: 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
Сообщений: 17,351
Репутация: 6038
По умолчанию

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

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

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

судя по всему речь идёт о 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


20:25.


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

RusProfile.ru


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