#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.