gpt4 book ai didi

sql - 等于操作中 "SQL_Latin1_General_CP1_CI_AS"和 "Modern_Spanish_CI_AS"之间的排序规则冲突

转载 作者:行者123 更新时间:2023-12-04 08:49:11 26 4
gpt4 key购买 nike

我正在从 SQL SERVER 2008 R2 到 WINDOWS AZURE 创建这个 SQL 函数,但我不知道如何解决这个问题。

Msg 468, Level 16, State 9, Procedure GetObjectivesByTest, Line 69 Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Modern_Spanish_CI_AS" in the equal to operation.


CREATE FUNCTION [dbo].[GetObjectivesByTest](@testId smallint)
RETURNS
@res TABLE
(
-- Add the column definitions for the TABLE variable here
ObjectiveId smallint NOT NULL,
Name nvarchar(50) NOT NULL,
Expectations nvarchar(400) NULL,
[Level] nvarchar(5) NOT NULL,
ParentId smallint NULL,
LearningSystem nvarchar(30) NULL,
[Rank] tinyint NULL
)
AS
BEGIN
DECLARE @string VARCHAR(MAX)
SELECT @string = OBJECTIVES FROM TESTS WHERE TestId = @testId

DECLARE @temp TABLE
(
ColumnA NVARCHAR(50),
ColumnB NVARCHAR(500),
ID INT IDENTITY(1,1)
)

INSERT INTO @temp (ColumnA, ColumnB) VALUES ('', @string)

DECLARE @idx INT, @cnt INT
SET @idx = 1
SELECT @cnt = COUNT(*) FROM @temp

DECLARE @SplitStr nvarchar(1000),
@SplitChar nvarchar(5),
@Columns VARCHAR(50)
SET @SplitChar = ','

WHILE @idx <= @cnt BEGIN
SELECT @SplitStr = ColumnB
FROM @temp
WHERE id = @idx

DECLARE @RtnValue table
(
ColumnName VARCHAR(50),
Data VARCHAR(50)
)

Declare @Count int
Set @Count = 1

While (Charindex(@SplitChar,@SplitStr)>0) Begin
Insert Into @RtnValue (ColumnName,Data)
Select @Columns, Data = ltrim(rtrim(Substring(@SplitStr,1,Charindex(@SplitChar,@SplitStr)-1)))

Set @SplitStr = Substring(@SplitStr,Charindex(@SplitChar,@SplitStr)+1,len(@SplitStr))
Set @Count = @Count + 1
End

Insert Into @RtnValue (ColumnName,Data)

Select @Columns,Data = ltrim(rtrim(@SplitStr))
SET @idx = @idx + 1
END

INSERT @RES // here is appointing the error
SELECT C.*
FROM Objectives AS C
INNER JOIN OBJECTIVES AS B ON (C.ParentId = B.ObjectiveId)
INNER JOIN OBJECTIVES AS A ON (B.ParentId = A.ObjectiveId)
where C.Rank = 3 AND B.Rank = 2 AND A.Rank = 1 AND
A.LearningSystem + ' ' + A.Level + '.' + C.Level IN (SELECT Data FROM @RtnValue)

RETURN
END

我不知道这个问题,我该如何解决不兼容问题。
提前致谢。

最佳答案

数据库排序规则 (@RtnValue.Data) 和 Objectives.LearningSysten 中使用的排序规则之间存在排序规则不匹配。

最快的解决方案可能是在 @RtnValue 中显式声明排序规则:

DECLARE @RtnValue table
(
ColumnName VARCHAR(50),
Data VARCHAR(50) COLLATE [insert required collation name]
)

这是一个快速修复,但是,您应该在数据库和表列级别检查排序规则的正确使用。

关于sql - 等于操作中 "SQL_Latin1_General_CP1_CI_AS"和 "Modern_Spanish_CI_AS"之间的排序规则冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084298/

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