解决两个表之间的排序规则问题

时间:2018-12-13 22:37:10

标签: sql sql-server database

我有以下SQL脚本,试图对位于同一数据库上的两个表执行联合。一个表似乎具有不同的排序规则类型

select * from ns.TurnsCOS 
union all 
select * from ns.TurnsValue 

运行后,出现以下错误

enter image description here

我已经阅读了其他有关解决排序规则问题的文章,但是在from子句之后添加'Collat​​e Latin1_General_Bin'似乎无效

如何最好地解决两个表之间的排序规则问题?

1 个答案:

答案 0 :(得分:3)

您必须分别更改每列的排序规则,例如

select OtherCols, Col1, Col6, Col7
from ns.TurnsCOS 
union all 
select OtherCols, Col1 collate SQL_Latin1_General_CP1_CI_AS, Col6 collate SQL_Latin1_General_CP1_CI_AS, Col7 collate SQL_Latin1_General_CP1_CI_AS
from ns.TurnsValue 

您可以按照以下方式永久更改列排序规则-但您应格外谨慎,因为这样可能会与其他现有查询冲突:

ALTER TABLE [TableName] ALTER COLUMN [Col_Name] 
            [Existing Data-Type] COLLATE [New_Collation] [NULL | NOT NULL];  
GO  

参考:https://docs.microsoft.com/en-us/sql/relational-databases/collations/set-or-change-the-column-collation?view=sql-server-2017