Как отсортировать текст, содержащий порядковые номера?

#sql-server-2008

#sql-server-2008

Вопрос:

Я работаю над приложением, в котором пользователи могут выбрать DVD и добавить его в свой «список пожеланий». Отчет может быть напечатан с текущим списком пожеланий. Если название DVD содержит порядковый номер (первый, второй, третий, четвертый и т.д.), мой клиент хотел бы выполнить сортировку по номеру (1, 2, 3, 4 и т.д.).

Например, если этот скрипт используется для создания, заполнения и запроса таблицы:

 CREATE TABLE Dvd (
   TitleID  INT IDENTITY PRIMARY KEY
   ,Title  VARCHAR(256)
)

GO

INSERT INTO Dvd (Title) VALUES ('M*A*S*H - The Complete First Season')
INSERT INTO Dvd (Title) VALUES ('M*A*S*H - The Complete Second Season')
INSERT INTO Dvd (Title) VALUES ('M*A*S*H - The Complete Third Season')
INSERT INTO Dvd (Title) VALUES ('M*A*S*H - The Complete Fourth Season')

SELECT Title FROM Dvd ORDER BY Title
  

Запрос возвращает следующие результаты:

M * A* S * H - Полный первый сезон
M * A* S * H - Четвертый сезон завершен
M * A* S * H - Второй сезон завершен
M * A* S * H - Завершенный третий сезон

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

M * A* S * H - Полный первый сезон
M * A* S * H - Второй сезон завершен
M * A* S * H - Завершенный третий сезон
M * A* S * H - Четвертый сезон завершен

Ответ №1:

Предполагая, что titleID увеличивается по порядку, просто упорядочивайте по titleID.