当前位置: 代码迷 >> Sql Server >> 全角转半角的函数 求大神解释解决思路
  详细解决方案

全角转半角的函数 求大神解释解决思路

热度:11   发布时间:2016-04-27 14:50:02.0
全角转半角的函数 求大神解释
以下是函数的创建
有几个问题不明白 
SQL code
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编码排序        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'%[!-~]%',      //这里的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))[email protected]))           ,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)           RETURN(@str)     END     GO  


这里的N 是什么意思? %[!-~]% 是什么意思?

求解释 !-~是指的unicode码是从!开始到~结束吗?查了一下好像不是啊

------解决方案--------------------
%[!-~]% 指的是类似于 !-~的字符
------解决方案--------------------
SQL code
是範圍大小關系如下 select top 94 n=identity(tinyint,33,1) into #1 from syscolumns  select nchar(n+65248) AS 全角 ,char(n) AS 半角 from #1  /*全角    半角!    !"    "#    #$    $%    %&    &'    '(    ()    )*    *+    +,    ,-    -.    ./    /0    01    12    23    34    45    56    67    78    89    9:    :;    ;<    <=    =>    >?    ?@    @A    AB    BC    CD    DE    EF    FG    GH    HI    IJ    JK    KL    LM    MN    NO    OP    PQ    QR    RS    ST    TU    UV    VW    WX    XY    YZ    Z[    [\    \]    ]^    ^_    _`    `a    ab    bc    cd    de    ef    fg    gh    hi    ij    jk    kl    lm    mn    no    op    pq    qr    rs    st    tu    uv    vw    wx    xy    yz    z{    {|    |}    }~    ~*/
  相关解决方案