以下是函数的创建
有几个问题不明白 
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))+@step))   
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)   
RETURN(@str)   
  END   
  GO  这里的N 是什么意思?   %[!-~]% 是什么意思?求解释 !-~是指的unicode码是从!开始到~结束吗?查了一下好像不是啊

解决方案 »

  1.   

    是範圍大小關系如下 select 
    top 94 n=identity(tinyint,33,1) 
    into #1 
    from syscolumns  select 
    nchar(n+65248) AS 全角 ,char(n) AS 半角 
    from #1  
    /*
    全角 半角
    ! !
    " "
    # #
    $ $
    % %
    & &
    ' '
    ( (
    ) )
    * *
    + +
    , ,
    - -
    . .
    / /
    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
    9 9
    : :
    ; ;
    < <
    = =
    > >
    ? ?
    @ @
    A A
    B B
    C C
    D D
    E E
    F F
    G G
    H H
    I I
    J J
    K K
    L L
    M M
    N N
    O O
    P P
    Q Q
    R R
    S S
    T T
    U U
    V V
    W W
    X X
    Y Y
    Z Z
    [ [
    \ \
    ] ]
    ^ ^
    _ _
    ` `
    a a
    b b
    c c
    d d
    e e
    f f
    g g
    h h
    i i
    j j
    k k
    l l
    m m
    n n
    o o
    p p
    q q
    r r
    s s
    t t
    u u
    v v
    w w
    x x
    y y
    z z
    { {
    | |
    } }
    ~ ~
    */