Укажите сортировку сортировки для запроса SELECT, расширяющую базовый оператор сортировки для многоязычного приложения.

У меня есть требование для многоязычного приложения, в котором столбцы, отображаемые при поиске, выбираются из конфигурации, а данные могут быть отсортированы на основе конфигурации.

Вопрос 1 - я использую запрос выбора, как это:

SELECT * 
FROM TABLE 
ORDER BY 1 COLLATE SQL_Latin1_General_CP1_CI_AS DESC,
ORDER BY 4 COLLATE SQL_Latin1_General_CP1_CI_AS DESC

Я получаю следующую ошибку:

Тип выражения int недопустим для предложения COLLATE.

Можно ли заставить это работать без указания имени столбца и только с помощью индекса столбца, как мы пишем обычные запросы SQL?

Вопрос 2 - Я также должен был бы поддержать целочисленную сортировку на основе столбцов как "ID"

Но я получаю ту же ошибку, что и в ответе на вопрос 1. Есть ли обходной путь, позволяющий это сделать? Или это ограничение SQL Server, с которым нам приходится мириться даже с самой последней версией SQL Server 2016?

Буду признателен за любой ответ / помощь.

1 ответ

Решение

Не рекомендуется использовать значения индекса столбца в запросах SQL. Даже во многих синтаксисах это не работает.

Поэтому лучше использовать имена столбцов в ваших запросах

Для оператора COLLATE вы можете использовать его для значений полей символьного типа данных. Для числовых типов данных вы не можете использовать COLLATE.

Другие вопросы по тегам