gpt4 book ai didi

sql - 临时表整理冲突 - 错误 : Cannot resolve the collation conflict between Latin1* and SQL_Latin1*

转载 作者:行者123 更新时间:2023-12-03 07:30:00 30 4
gpt4 key购买 nike

我无法更新临时表。这是我的查询

CREATE TABLE #temp_po(IndentID INT, OIndentDetailID INT, OD1 VARCHAR(50), OD2 VARCHAR(50), 
OD3 VARCHAR(50), ORD VARCHAR(50), NIndentDetailID INT, ND1 VARCHAR(50), ND2 VARCHAR(50),
ND3 VARCHAR(50), NRD VARCHAR(50), Quantity DECIMAL(15,3))

INSERT INTO #temp_po(IndentID, OIndentDetailID, OD1, OD2, OD3, ORD)
SELECT ID.IndentID, ID.IndentDetailID, ID.D1, ID.D2, ID.D3, ID.RandomDimension
FROM STR_IndentDetail ID WHERE ID.IndentID = @IndentID

UPDATE
t
SET
t.ND1 = CASE WHEN D.D1 = '' THEN NULL ELSE D.D1 END,
t.ND2 = CASE WHEN D.D2 = '' THEN NULL ELSE D.D2 END,
t.ND3 = CASE WHEN D.D3 = '' THEN NULL ELSE D.D3 END,
t.NRD = CASE WHEN D.RandomDim = '' THEN NULL ELSE D.RandomDim END,
t.Quantity = D.PurchaseQty
FROM
#temp_po t INNER JOIN @detail D ON D.IndentDetailID = t.OIndentDetailID
WHERE
t.IndentID = @IndentID

但它给出了错误

Cannot resolve the collation conflict between "Latin1_General_CI_AI" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.



如何解决这个问题?

我的 tempdb整理是 Latin1_General_CI_AI我的实际数据库整理是 SQL_Latin1_General_CP1_CI_AS .

最佳答案

发生这种情况是因为 #tempdb.temp_po.OD1 上的排序规则和 STR_IndentDetail.D1是不同的(特别是,请注意 #tempdb 是一个不同的系统数据库,这通常是为什么它会有一个默认的整理意见,不像你自己的数据库和表,你可能已经提供了更具体的意见)。

由于您可以控制临时表的创建,因此解决此问题的最简单方法似乎是在临时表中创建 *char 列,其排序规则与您的 STR_IndentDetail 相同。 table :

CREATE TABLE #temp_po(
IndentID INT,
OIndentDetailID INT,
OD1 VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS,
.. Same for the other *char columns

在你无法控制表创建的情况下,当你加入列时,另一种方法是添加显式 COLLATE DML 中发生错误的语句,通过 COLLATE SQL_Latin1_General_CP1_CI_AS或更容易,使用 COLLATE DATABASE_DEFAULT
SELECT * FROM #temp_po t INNER JOIN STR_IndentDetail s 
ON t.OD1 = s.D1 COLLATE SQL_Latin1_General_CP1_CI_AS;

或者,更容易
SELECT * FROM #temp_po t INNER JOIN STR_IndentDetail s 
ON t.OD1 = s.D1 COLLATE DATABASE_DEFAULT;

SqlFiddle here

关于sql - 临时表整理冲突 - 错误 : Cannot resolve the collation conflict between Latin1* and SQL_Latin1*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21332105/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com