2013-08-06 33 views
1

我試圖建立在SQL Server 2008 R2的過程,但其顯示的錯誤不能在同樣的決心「Latin1_General_CI_AI」和規則「SQL_Latin1_General_CP1_CI_AS」之間的排序規則衝突操作

無法解析之間的排序規則衝突「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  

我試圖整理與不同的排序規則表,但它並沒有奏效。 我該如何解決這個問題。

+0

在與其他排序規則的表格的比較中添加「COLLATE」語句。如果您使用的是SSMS,可以雙擊結果窗口中的錯誤,它會顯示出現在哪條線上:) – Bridge

+0

它在第6行顯示錯誤 選擇A.QuestionId,A.QsnDesc ,A.CorrectOption,B.OptionValue,A.Marks, 如何在這裏添加COLLATE語句? – Hanumendra

+0

什麼數據類型是Quiz_tblQsnsLimitMaster.QsnId? – OzrenTkalcecKrznaric

回答

0

由於您已經提到每個表中的QuestionID都是varchar,所以可能是這兩者之間的比較。因此,在一個猜測,嘗試改變路線:

Where A.QuestionId = B.QuestionId And 

以下幾點:

Where A.QuestionId = B.QuestionId COLLATE SQL_Latin1_General_CP1_CI_AS And 

我更喜歡它,如果你使用正確的連接語法爲你的表 - 但那是另一天; - )

+0

我試過了,但它不起作用,它顯示相同的錯誤 – Hanumendra

4

或許這可能幫助,改變你那裏像這樣

Where A.QuestionId COLLATE DATABASE_DEFAULT = B.QuestionId COLLATE DATABASE_DEFAULT 
0

條件只需使用用不同的排序規則聯接表時下面的語法,

其中A.QuestionId整理SQL_Latin1_General_CP1_CI__AS = B.QuestionId整理SQL_Latin1_General1_General_CP1_CI_AS

1

嘗試使用這一點,在那裏 字段名COLLATE DATABASE_DEFAULT = secondfieldname COLLATE DATABASE_DEFAULT

這是工作

相關問題