虚心请教!

解决方案 »

  1.   

    我只想到每个replace他,楼下高手来
      

  2.   

    if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_convert]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))   
      drop   function   [dbo].[f_convert]   
      GO   
        
      /*--全角/半角转换   
      转换说明   
      全角字符从的unicode编码从65281~65374   
      半角字符从的unicode编码从       33~126   
      空格比较特殊,全角为   12288,半角为   32   
      而且除空格外,全角/半角按unicode编码排序在顺序上是对应的   
      所以可以直接通过用+-法来处理非空格数据,对空格单独处理   
      like的时候,指定排序规则   COLLATE   Latin1_General_BIN   
      是保证字符顺序按unicode编码排序   
      (此函数部分思路参考了CSDN上大力的转换函数)   
      --邹建   2005.01(引用请保留此信息)--*/   
        
      /*--调用示例   
        
      declare   @s1   varchar(8000)   
      select   @s1='中    2-3456a78STUVabn中国opwxyz'   
      select   dbo.f_convert(@s1,0),dbo.f_convert(@s1,1)   
      --*/     CREATE   FUNCTION   f_Convert(   
      @str   NVARCHAR(4000),   --要转换的字符串   
      @flag   bit                         --转换标志,0转换成半角,1转换成全角   
      )RETURNS   nvarchar(4000)   
      AS   
      BEGIN   
      DECLARE   @pat   nvarchar(8),@step   int,@i   int,@spc   int   
      IF   @flag=0   
      SELECT   @pat=N'%[!-~]%',@step=-65248,   
      @str=REPLACE(@str,N' ',N'   ')   
      ELSE   
      SELECT   @pat=N'%[!-~]%',@step=65248,   
      @str=REPLACE(@str,N'   ',N' ')   
      SET   @i=PATINDEX(@pat   COLLATE   LATIN1_GENERAL_BIN,@str)   
      WHILE   @i>0   
      SELECT   @str=REPLACE(@str,   
      SUBSTRING(@str,@i,1),   
      NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))   
      ,@i=PATINDEX(@pat   COLLATE   LATIN1_GENERAL_BIN,@str)   
      RETURN(@str)   
      END   
      GO   
      

  3.   

    select dbo.f_Convert(字段,1) from 表