我正在尝试在SQL Server 2008R2中创建一个过程,但显示此错误
无法解决“ Latin1_General_CI_AI”之间的排序规则冲突和“ SQL_Latin1_General_CP1_CI_AS”等于操作。
我创建的过程是
CREATE Procedure Ps_Quiz_OnlineTest_QuestionsWithOptions_Get --'Ques1'
@Ques Varchar(8000)
As
Begin
Select
A.QuestionId,
A.QsnDesc,
A.CorrectOption,
B.OptionValue,
A.Marks,
(
Select QsnName
From Quiz_tblQsnsLimitMaster
Where QsnId = @Ques) QuesPaper,
(
Select Durationoftest
From Quiz_tblQsnsLimitMaster
Where QsnId = @Ques) QuesPaper
From
Quiz_tblQsnCreationMaster A,
Quiz_tblQsnCreationDetail B
Where
A.QuestionId = B.QuestionId
And A.QuestionId In (
Select QuestionIds
From FN_Question_Answers_Quiz(@Ques))
And B.QuestionId In (
Select QuestionIds
From FN_Question_Answers_Quiz(@Ques))
Order By
A.QuestionId,
B.OptionOrder
End
我试图用不同的排序规则对表进行排序,但是没有用。我该如何解决。
由于您已经提到每个表中的QuestionID是varchar,所以可能是它们之间的比较。因此,猜测一下,尝试更改行:
Where A.QuestionId = B.QuestionId COLLATE SQL_Latin1_General_CP1_CI_AS And
如果您对表使用正确的连接语法,我会更喜欢-但这又是一天了;-)
尝试使用此,其中fieldname COLLATE DATABASE_DEFAULT = secondfieldname COLLATE DATABASE_DEFAULT
连接具有不同归类的表时,只需使用以下语法,
要克服此问题,请使用以下代码:
要克服此问题,请使用以下代码:
SELECT NAME
FROM sys.objects
WHERE NAME COLLATE DATABASE_DEFAULT NOT IN (SELECT TYPE
FROM sys.objects)