创建函数

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

 测试代码

DECLARE @s1 VARCHAR(8000)

SELECT @s1 = '中    2-3456a78STUVabn中国opwxyz' 

SELECT dbo.F_convert(@s1, 0),
       dbo.F_convert(@s1, 1)  

C# 中实现

byte[] b = System.Text.Encoding.Unicode.GetBytes("7");
     
            if (b.Length == 2)
            {
                if (b[1] == 255)
                {
                    b[0] = (byte)(b[0] + 32);
                    b[1] = 0;
                    float TT= float.Parse(System.Text.Encoding.Unicode.GetChars(b)[0].ToString());
                    Console.WriteLine(TT);
                    Console.WriteLine("7");
                    Console.Read();
                }
            }   

 

 

 

 posted on 2013-04-11 19:40  julianlin  阅读(370)  评论(0)    收藏  举报