Anj*_*nja 7 sql-server collation t-sql union
怎么COLLATE
用UNION
?我想合并 2 个表(都具有相同的列和相同的类型:)varchar,int, int, decimal
。
我收到以下错误:
sg 468, Level 16, State 9, Line 1 无法解决 UNION 操作中“Serbian_Latin_100_CI_AS”和“Croatian_CI_AS”之间的排序冲突。
我的 SQL 语句:
select * from #IA_BIH
union
select * from #IA_MNE
Run Code Online (Sandbox Code Playgroud)
我应该在哪里插入collate database_default
?我尝试了不同的组合,但没有奏效。
根据排序规则名称,我假设您使用的是 Microsoft SQL Server。
COLLATE 可用于数据库级别或列级别。由于您正在尝试 UNION 两个表,因此在所需列上使用列排序规则将解决您的查询。
这是一个示例代码,可以帮助您:
use testdb
GO
CREATE TABLE dbo.Serbian (Name VARCHAR(20) COLLATE Serbian_Latin_100_CI_AS);
CREATE TABLE dbo.Croatian (Name VARCHAR(20) COLLATE Croatian_CI_AS);
GO
INSERT INTO dbo.Serbian VALUES ('serbian');
INSERT INTO dbo.Croatian VALUES ('croation');
GO
-- Collate to a particular named collation
SELECT Name COLLATE Serbian_Latin_100_CI_AS as CollatedNameSerbian from dbo.Serbian
UNION ALL
SELECT Name COLLATE Serbian_Latin_100_CI_AS from dbo.Croatian
GO
-- Collate to the database default collation
SELECT Name COLLATE database_default as CollatedNameDBDefault from dbo.Serbian
UNION ALL
SELECT Name COLLATE database_default from dbo.Croatian
GO
DROP TABLE dbo.Serbian;
DROP TABLE dbo.Croatian;
GO
Run Code Online (Sandbox Code Playgroud)
当然,如果您有几个具有冲突排序规则的列,您还需要定义它们的排序规则。
归档时间: |
|
查看次数: |
38553 次 |
最近记录: |