“Turkish_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”出现SQL错误

时间:2011-01-28 14:51:13

标签: c# .net asp.net sql tsql

我有一个像这样的SQL查询:

SELECT E.HESAP, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2 AS 'TEKLIF',
    E.MUSTERI,CONVERT(VARCHAR(10),B.ISL_TAR,103) AS 'TARIH', SUM(
    ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(B.FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.BSMV AS FLOAT),0)+ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
    ISNULL(CAST(B.GECIKME_BSMV AS FLOAT),0)) AS 'YATAN', 
    (CASE WHEN C.DOVIZ_KOD = 21 THEN 'EUR' WHEN C.DOVIZ_KOD = 2 THEN 'USD' WHEN C.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR',
    E.AVUKAT, CONVERT(VARCHAR(10),A.ICRA_TAR,103) AS 'İCRA TARİHİ', CONVERT(VARCHAR(10),A.HACIZ_TAR,103) AS 'HACİZ TARİHİ'
    FROM TAKIP A, YAZ..MARDATA.BIR_TAHSIL B, 
    YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D, AVUKAT E
    WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
    AND B.TEKLIF_NO2 = C.TEKLIF_NO2
    AND A.T_HESAP_NO = C.HESAP_NO
    AND C.HESAP_NO = B.HESAP_NO
    AND B.HESAP_NO = E.HESAP
    AND A.T_SRM = D.T_SR_ID
    AND A.T_STATU = 2
    AND A.T_SRM <> 6

但是当我运行它时,我收到一个错误:

  “/”应用程序中的服务器错误   无法解决“Turkish_CI_AS”和“Turkish_CI_AS”之间的排序规则冲突   “SQL_Latin1_General_CP1_CI_AS”中   等于操作。
  描述:期间发生了未处理的异常   执行当前的网络请求   请查看堆栈跟踪了解更多信息   有关错误的信息和位置   它起源于代码。

     

异常详细信息:System.Data.SqlClient.SqlException:   无法解决排序规则冲突   在“Turkish_CI_AS”和。之间   “SQL_Latin1_General_CP1_CI_AS”中   等于操作。

     

来源错误:       第77行:myConnection.Open();       第78行:       第79行:SqlDataReader dr = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);       第80行:       第81行://显示数据

我找不到错误。它在哪里?

2 个答案:

答案 0 :(得分:4)

查看一个AND子句,其中数据类型的类型为VARCHAR。您需要在where的两侧指定排序规则,以确保不会出现此错误。

EG:

WHERE B.TEKLIF_NO1 COLLATE SQL_Latin1_General_CP1_CI_AS = C.TEKLIF_NO1 COLLATE SQL_Latin1_General_CP1_CI_AS

答案 1 :(得分:4)

文字'/'将采用数据库的默认排序规则。

尝试

... B.TEKLIF_NO1 + '/' COLLATE Turkish_CI_AS + B.TEKLIF_NO2 AS 'TEKLIF' ...