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

标签 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”似乎不起作用

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

最佳答案

您必须单独更改每列的排序规则,例如

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://learn.microsoft.com/en-us/sql/relational-databases/collations/set-or-change-the-column-collation?view=sql-server-2017

关于sql - 解决两个表之间的排序规则问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771061/

相关文章:

sql-server - T-SQL 相当于 Excel "MAX"函数,返回两个数字中较大的一个

mysql - Web 服务器如何与数据库通信?

java - 如何使用java从数据库中检索日期

sql - 如何将逗号分隔的 NVARCHAR 转换为 SQL Server 2005 中的表记录?

php - MySQL 数据透视表获取分组记录中的第一行和最后一行

sqlite 3 中的数据库角色切换

database - 在 matlab 中创建多维 NetCDF

sql - 字符 1 处或附近的 "EXERCISE_ID"处出现 postgresql 语法错误

sql - .Net SqlCommand.ExecuteNonQuery 中的查询超时,适用于 SQL Server Management Studio

sql-server - 如何找到SQL Server运行端口?