Реализация ссылок на столбцы без учета регистра в T-SQL - PullRequest
0 голосов
/ 29 июня 2018

Я работаю с SQL Server 2014. У меня динамически сгенерированный SQL, который выглядит так (упрощенно для краткости):

with CTE as 
(
    select field as [field], field as [Field] 
    from myTable
)
select [field], [Field] 
from CTE

Вышеуказанное, однако, приводит к этой ошибке:

Столбец 'Поле' был указан несколько раз для 'CTE'.

Я ожидаю / хочу, чтобы это сработало, потому что 2 столбца на самом деле уникальны, учитывая случай. Можно ли в любом случае попросить SQL (возможно, с помощью некоторого параметра SET) считать их уникальными?

Мой динамически генерируемый SQL очень сложен, и очень трудно идентифицировать такие «дубликаты» и «комбинировать» их.

1 Ответ

0 голосов
/ 30 июня 2018

С теоретической точки зрения, вы можете изменить параметры сортировки вашей базы данных с учетом регистра. Чувствительные к регистру сопоставления базы данных / сервера также учитывают чувствительность к регистру псевдонимов. Сортировка столбцов таблицы и сопоставление столбца в выборке не будут.

Изменение параметров сортировки базы данных / сервера сильно изменится, хотя . Исправить проблему с псевдонимом было бы очень серьезным изменением, и я сомневаюсь, что это жизнеспособное решение для вас.

Тем не менее, если ваш динамический SQL способен увидеть, что псевдоним field уже существует, и использовать псевдоним Field с заглавной буквы для следующего экземпляра того же столбца, я думаю, вы могли бы просто настроить его на field1, field2 и т. Д. Вы всегда можете переименовать их в то, что вы хотите в вашем внешнем / конечном выборе, они просто должны быть уникальными в запросе CTE.

...