テーブルから行を取得するために使用されるかなり単純なページネーションクエリがあります
ALTER PROCEDURE mytable.[news_editor_paginate]
@count int,
@start int,
@orderby int
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP (@count) * FROM
(
SELECT news_edits.*,
ROW_NUMBER() OVER (
ORDER BY CASE
WHEN @orderby = 0 THEN news_edits.[time]
WHEN @orderby = 1 THEN news_edits.lastedit
WHEN @orderby = 2 THEN news_edits.title
END
DESC
) AS num
FROM news_edits
) AS a
WHERE num > @start
END
パラメータは@orderby
、結果を並べ替える列を決定します。
news_edit.[time]
とnews_edits.lastedit
はどちらも日時フィールドです。しかしnews_edits.title
、varchar フィールドです。
クエリは両方の日時フィールドに対して正常に実行されますが@orderby = 2
、次のエラーが発生した場合:
「文字列から日時を変換する際、変換に失敗しました。」
私が抱えている問題は、何も変換しようとしていないということですか?