提示很清楚了,字符集冲突。FROM U_NextBOMLevel B
join @MulitiLevelBill A on B.PARENT=A.Component应该是U_NextBOMLevel 使用的字符集和@MulitiLevelBill 的不一样。在等式B.PARENT=A.Component后面显示声明要使用的字符集就可以了。如下面联机帮助例子USE tempdb
GOCREATE TABLE TestTab (
id int,
GreekCol nvarchar(10) collate greek_ci_as,
LatinCol nvarchar(10) collate latin1_general_cs_as
)
INSERT TestTab VALUES (1, N'A', N'a')
GOThe predicate in the following query has collation conflict and generates an error:SELECT *
FROM TestTab
WHERE GreekCol = LatinColThis is the result set.Msg 446, Level 16, State 9, Server CTSSERV, Line 1
Cannot resolve collation conflict for equal to operation.The predicate in the following query is evaluated in collation greek_ci_as because the right expression has the explicit label, which takes precedence over the implicit label of the right expression:SELECT *
FROM TestTab
WHERE GreekCol = LatinCol COLLATE greek_ci_asThis is the result set.id GreekCol LatinCol
----------- -------------------- --------------------
1 a A(1 row affected)
join @MulitiLevelBill A on B.PARENT=A.Component应该是U_NextBOMLevel 使用的字符集和@MulitiLevelBill 的不一样。在等式B.PARENT=A.Component后面显示声明要使用的字符集就可以了。如下面联机帮助例子USE tempdb
GOCREATE TABLE TestTab (
id int,
GreekCol nvarchar(10) collate greek_ci_as,
LatinCol nvarchar(10) collate latin1_general_cs_as
)
INSERT TestTab VALUES (1, N'A', N'a')
GOThe predicate in the following query has collation conflict and generates an error:SELECT *
FROM TestTab
WHERE GreekCol = LatinColThis is the result set.Msg 446, Level 16, State 9, Server CTSSERV, Line 1
Cannot resolve collation conflict for equal to operation.The predicate in the following query is evaluated in collation greek_ci_as because the right expression has the explicit label, which takes precedence over the implicit label of the right expression:SELECT *
FROM TestTab
WHERE GreekCol = LatinCol COLLATE greek_ci_asThis is the result set.id GreekCol LatinCol
----------- -------------------- --------------------
1 a A(1 row affected)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货