SQL错误:Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS [英] SQL Error Turkish_CI_AS and SQL_Latin1_General_CP1_CI_AS
本文介绍了SQL错误:Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
首先,对于那些长时间的查询:)
我在SQL SERVER 2008中有这样的查询。这是工作。
SELECT C.HESAP_NO,B.TEKLIF_NO1 +'/'+ B.TEKLIF_NO2 AS'TEKLIF'
C.MUS_K_ISIM,CONVERT(VARCHAR(10),B.ISL_TAR,103)AS'TARIH',SUM(
ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ ISNULL B.FAIZ AS FLOAT),0)+
ISNULL(CAST(B.BSMV AS FLOAT),0)+ ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
ISNULL 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',D.T_SR_ACK
来自TAKIP A,YAZ..MARDATA.BIR_TAHSIL B,
YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D
WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
AND B.TEKLIF_NO2 = C.TEKLIF_NO2
AND A.T_HESAP_NO = C.HESAP_NO
AND A.T_SRM = D.T_SR_ID
AND A.T_STATU = 2
AND A.T_SRM<> 6
GROUP BY C.HESAP_NO,B.TEKLIF_NO1 +'/'+ B.TEKLIF_NO2,C.MUS_K_ISIM,B.ISL_TAR,C.DOVIZ_KOD,D.T_SR_ACK
但是,当我对这样的查询进行少许修改时;
SELECT E.HESAP,B.TEKLIF_NO1 +'/'COLLATE Turkish_CI_AS + B.TEKLIF_NO2 AS'TEKLIF',
E.MUSTERI,CONVERT(VARCHAR(10),B.ISL_TAR, TARIH',SUM(
ISNULL(CAST(B.ODENEN_ANAPARA AS FLOAT),0)+ ISNULL(CAST(B.FAIZ AS FLOAT),0)+
ISNULL ),0)+ ISNULL(CAST(B.GECIKME_FAIZ AS FLOAT),0)+
ISNULL(CAST(B.GECIKME_BSMV AS FLOAT),0))AS'YATAN',
.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'İCRATARİHİ',CONVERT(VARCHAR(10),A.HACIZ_TAR,103)AS'HACİZTARİ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
GROUP BY C.HESAP_NO,B.TEKLIF_NO1 +'/'+ B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD,E.HESAP,E.MUSTERI,E.AVUKAT,A.ICRA_TAR,A.HACIZ_TAR
我收到这样的错误
消息468,级别16,状态9,行16
在等于操作中无法解决Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS之间的排序规则冲突。任何人都有这个错误的想法? p> Regards,Soner 解决方案我想你需要通过表达式复制你的组中的collate子句:
SELECT E.HESAP,B.TEKLIF_NO1 +'/'COLLATE Turkish_CI_AS + 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 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',
(CASD 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'İCRATARİHİ',CONVERT(VARCHAR(10),A.HACIZ_TAR,103)AS'HACİZTARİ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
GROUP BY C.HESAP_NO,B.TEKLIF_NO1 +'/'COLLATE Turkish_CI_AS + B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD,E.HESAP,E.MUSTERI,E.AVUKAT,A.ICRA_TAR,A .HACIZ_TAR
First, sorry for those long queries :)
I have query in SQL SERVER 2008 like this. And this is working.
SELECT C.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2 AS 'TEKLIF',
C.MUS_K_ISIM,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', D.T_SR_ACK
FROM TAKIP A, YAZ..MARDATA.BIR_TAHSIL B,
YAZ..MARDATA.S_TEKLIF C,P_TAKIP_SR D
WHERE B.TEKLIF_NO1 = C.TEKLIF_NO1
AND B.TEKLIF_NO2 = C.TEKLIF_NO2
AND A.T_HESAP_NO = C.HESAP_NO
AND A.T_SRM = D.T_SR_ID
AND A.T_STATU = 2
AND A.T_SRM <> 6
GROUP BY C.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2, C.MUS_K_ISIM,B.ISL_TAR,C.DOVIZ_KOD, D.T_SR_ACK
BUT, when i made little changing on this query like this;
SELECT E.HESAP, B.TEKLIF_NO1 + '/' COLLATE Turkish_CI_AS + 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
GROUP BY C.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD, E.HESAP, E.MUSTERI, E.AVUKAT, A.ICRA_TAR, A.HACIZ_TAR
I getting an error like this
Msg 468, Level 16, State 9, Line 16
Cannot resolve the collation conflict between "Turkish_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
Anybody have an idea for this error?
Regards, Soner
解决方案 I think you need to replicate your collate clause in your group by expression also:
SELECT E.HESAP, B.TEKLIF_NO1 + '/' COLLATE Turkish_CI_AS + 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
GROUP BY C.HESAP_NO, B.TEKLIF_NO1 + '/' COLLATE Turkish_CI_AS + B.TEKLIF_NO2,B.ISL_TAR,C.DOVIZ_KOD, E.HESAP, E.MUSTERI, E.AVUKAT, A.ICRA_TAR, A.HACIZ_TAR
这篇关于SQL错误:Turkish_CI_AS和SQL_Latin1_General_CP1_CI_AS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文