Укажите сортировку сортировки для запроса 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.