SELECT substring(v_yhzl.dnbh,1,6)+   
         substring(v_yhzl.yhzh,1,19)+   
         substring(v_yhzl.khqc,1,5)+
         REPLICATE(' ',5-len(substring(v_yhzl.khqc,1,5)))+
         REPLICATE(' ',11-len(substring(rtrim(v_yhje.EXPR1),1,11)))+
         substring(rtrim(v_yhje.EXPR1),1,11)  
    FROM v_yhje,   
         v_yhzl  
   WHERE ( v_yhje.dnbh = v_yhzl.dnbh )
在查询分析器里出现问题:服务器: 消息 457,级别 16,状态 1,行 2
无法执行值从 varchar 到 varchar 的隐性转换,因为该值的排序规则因排序规则冲突而未能解决。v_yhzl.dnbh 是一个有0开头的字符性字段SELECT substring(v_yhzl.dnbh,1,6 )  
FROM v_yhje, v_yhzl  
WHERE ( v_yhje.dnbh = v_yhzl.dnbh )这样的没问题SELECT 
         substring(v_yhzl.yhzh,1,19)+   
         substring(v_yhzl.khqc,1,5)+
         REPLICATE(' ',5-len(substring(v_yhzl.khqc,1,5)))+
         REPLICATE(' ',11-len(substring(rtrim(v_yhje.EXPR1),1,11)))+
         substring(rtrim(v_yhje.EXPR1),1,11)  
    FROM v_yhje,   
         v_yhzl  
   WHERE ( v_yhje.dnbh = v_yhzl.dnbh )这样的也没问题
大侠指点下拉!!

解决方案 »

  1.   

    應該是排序規則引起的,檢查dnbh這列和其余幾列的排序規則是否一致,如果不一致,將這列和別的列的排序規則改成一致。
      

  2.   

    试试
    用COLLATE子句指定相同的排序規則比如
    WHERE ITEM IS NOT NULL AND DATE>=@DATE1 AND DATE<=@DATE2 COLLATE Chinese_PRC
      

  3.   

    帮忙,排序规则我把所有字段全部改成<database default>或二进制排序规则都不行,还是同样的错误提示
      

  4.   

    try
    SELECT substring(v_yhzl.dnbh,1,6)+   
             substring(v_yhzl.yhzh,1,19)+   
             substring(v_yhzl.khqc,1,5)+
             REPLICATE(' ',5-len(substring(v_yhzl.khqc,1,5)))+
             REPLICATE(' ',11-len(substring(rtrim(v_yhje.EXPR1),1,11)))+
             substring(rtrim(v_yhje.EXPR1),1,11)  
        FROM v_yhje,   
             v_yhzl  
       WHERE  v_yhje.dnbh = v_yhzl.dnbh 
    COLLATE Chinese_PRC_CI_AS
      

  5.   

    问题解决了,我安装SQL SERVER的时候指定了二进制的排序规则,然后在创建数据库的时候,没选择二进制排序规则,所以出现错误,我刚刚把数据库先删除了,重新建立数据库,并指定了相应的排序规则,一切ok,感谢paoluo(一天到晚游泳的鱼)、xyxfly(消极)