提示很清楚了,字符集冲突。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)