У меня есть этот запрос, который вызывает ошибку:Cast Ошибка в ORDER BY Пунктом
Cannot convert from nvarchar to bigint
Но только на ORDER BY области.
SELECT TOP (25)
CAST(AttrValue AS BIGINT) AttrValue
FROM
tblattributevalue AS attVal WITH (NOLOCK)
INNER JOIN
tblattribute AS att WITH (NOLOCK) ON Att.AttrID = attVal.AttrID
AND att.AttrName = 'Rank Gold'
LEFT JOIN
#books AS P ON P.BookID = attVal.BookId
WHERE
attVal.GenreID = @GenreID
AND attVal.Active = 1
AND att.Active = 1
AND P.BookID IS NOT NULL
ORDER BY
CAST(AttrValue AS BIGINT)
Если я закомментируйте ORDER BY
, она работает просто отлично. Верхний кастинг работает и использует одни и те же данные. Отображаемые данные:
AttrValue:
28,
24,
2,
6,
89,
27,
1,
4,
234,
3,
7,
9
Любые идеи относительно того, почему он преобразует в SELECT
, но не на ORDER BY
?
Просто попробуйте дать '..... order by 1;'. – Wanderer
Удалите бросок, у вас есть значение, которое невозможно преобразовать в большой int. Почему у вас есть бросок в порядке clase, это уничтожит надежду на использование индекса ..... не используйте какую-либо функцию в левой части критерия или порядка на – Juan
Первые 25 результатов (неупорядоченные) чтобы быть отличным до bigint, что не вызывает ошибок. Когда вы выбираете заказ, он должен отбросить их всех до сортировки, и у вас есть хотя бы одно значение, которое нельзя отнести к bigint. Это вызывает ошибку. – Forklift