Tsql 在T-SQL中强制执行不区分大小写的列引用

Tsql 在T-SQL中强制执行不区分大小写的列引用,tsql,sql-server-2014,Tsql,Sql Server 2014,我正在使用SQL Server 2014。为了简洁起见,我动态生成了如下SQL: with CTE as ( select field as [field], field as [Field] from myTable ) select [field], [Field] from CTE 但是,上述情况会导致此错误: 为“CTE”多次指定了列“Field” 我希望/希望这能起作用,因为这两列事实上是唯一的,考虑到案例。我们是否可以通过一些SET选项询问SQL,将它们视为唯

我正在使用SQL Server 2014。为了简洁起见,我动态生成了如下SQL:

with CTE as 
(
    select field as [field], field as [Field] 
    from myTable
)
select [field], [Field] 
from CTE
但是,上述情况会导致此错误:

为“CTE”多次指定了列“Field”

我希望/希望这能起作用,因为这两列事实上是唯一的,考虑到案例。我们是否可以通过一些SET选项询问SQL,将它们视为唯一的


我动态生成的SQL非常复杂,很难识别这些“重复项”并将它们“组合起来”。

从理论上讲,您可以将数据库的排序规则更改为区分大小写的选项。区分大小写的数据库/服务器排序也会考虑别名的大小写敏感度。表列排序规则,而在select中对列进行排序将不起作用

。修复别名问题将是一个非常极端的改变,我怀疑这对您来说是一个可行的解决方案


也就是说,如果您的动态SQL能够看到别名字段已经存在,并且在同一列的下一个实例中使用大写的别名字段,那么我认为您可以简单地将其调整为field1、field2等。您可以始终在外部/最终选择中将其重新别名为您想要的任何内容,它们只需要在CTE查询中是唯一的。

谢谢。我还发现我可以在SELECT语句中使用COLLATE子句,我是否应该在这里尝试使用它,而不影响整个数据库?@cooper\u milton很遗憾,这也不起作用。只有数据库或服务器排序规则才会考虑别名的大小写敏感度。