日期:2014-05-18  浏览次数:20691 次

地址转拼音的问题
地址转拼音的问题,当地址里出现数字或字母时就出现问题:
  declare   @hanzi   nvarchar(max),
                @pinyin     nvarchar(max),
                @naddress   nvarchar(max),
                @addressen   nvarchar(max),
                @i   int,
                @k   int,
                @id     int
select   @address= '156 ',@id=1
        begin
                                    set   @i=1
                                    while     @i <=len(@address)
                                    begin  
                                        select   @hanzi=   substring(@address,@i,1)  
                                          print   @hanzi
                                          select   @pinyin=   case   when   datalength(@hanzi)=1   then   @hanzi
                                                                                when   datalength(@hanzi) <> 1   then       (select   top   1   py2   from   汉字拼音表     where     chs=@hanzi)   end
                  --取汉字的拼音                                                    
                                  print   @pinyin
                                        update   公司表   set   addressen=addressen+ '   '+@pinyin             where   id=@id
                                        select   @i=@i+1
                                  end  
end


------解决方案--------------------
nvarchar换成varchar试试
------解决方案--------------------
地址里有数字,结果addressen就为null
没听懂
------解决方案--------------------
datalength对nvarchar的都是2位,所有会查出null,用ascii码或者把@hanzi定义成varchar型