全形半形轉換函式

2021-09-07 08:28:38 字數 3926 閱讀 5811

--

(此函式部分思路參考了csdn上大力的轉換函式)

--鄒建2005.01(引用請保留此資訊)--*/

go--

建立函式

create

function

sbc2dbc

(

@str

nvarchar(4000), --

要轉換的字串

@flag

bit--

轉換標誌,0轉換成半形,1轉換成全角

)returns

nvarchar(4000

) as

begin

declare

@pat

nvarchar(8),@step

int,@i

int,@spc

intif

@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>

0select

@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

--測試示例

select dbo.sbc2dbc('

~~~~ca!b

',1) --

執行結果

/*~~~~ca!b

*/--

附半形全形表

/*ascii 全形字符 unicode 半形字元 unicode

0x20 " "空格u+3000 " "空格u+0020

0x21 !u+ff01 ! u+0021

0x22 "u+ff02 " u+0022

0x23 #u+ff03 # u+0023

0x24 $u+ff04 $ u+0024

0x25 %u+ff05 % u+0025

0x26 &u+ff06 & u+0026

0x27 'u+ff07 ' u+0027

0x28 (u+ff08 ( u+0028

0x29 )u+ff09 ) u+0029

0x2a *u+ff0a * u+002a

0x2b +u+ff0b + u+002b

0x2c ,u+ff0c , u+002c

0x2d -u+ff0d - u+002d

0x2e .u+ff0e . u+002e

0x2f /u+ff0f / u+002f

0x30 0u+ff10 0 u+0030

0x31 1u+ff11 1 u+0031

0x32 2u+ff12 2 u+0032

0x33 3u+ff13 3 u+0033

0x34 4u+ff14 4 u+0034

0x35 5u+ff15 5 u+0035

0x36 6u+ff16 6 u+0036

0x37 7u+ff17 7 u+0037

0x38 8u+ff18 8 u+0038

0x39 9u+ff19 9 u+0039

0x3a :u+ff1a : u+003a

0x3b ;u+ff1b ; u+003b

0x3c <u+ff1c < u+003c

0x3d =u+ff1d = u+003d

0x3e >u+ff1e > u+003e

0x3f ?u+ff1f ? u+003f

0x40 @u+ff20 @ u+0040

0x41 au+ff21 a u+0041

0x42 bu+ff22 b u+0042

0x43 cu+ff23 c u+0043

0x44 du+ff24 d u+0044

0x45 eu+ff25 e u+0045

0x46 fu+ff26 f u+0046

0x47 gu+ff27 g u+0047

0x48 hu+ff28 h u+0048

0x49 iu+ff29 i u+0049

0x4a ju+ff2a j u+004a

0x4b ku+ff2b k u+004b

0x4c lu+ff2c l u+004c

0x4d mu+ff2d m u+004d

0x4e nu+ff2e n u+004e

0x4f ou+ff2f o u+004f

0x50 pu+ff30 p u+0050

0x51 qu+ff31 q u+0051

0x52 ru+ff32 r u+0052

0x53 su+ff33 s u+0053

0x54 tu+ff34 t u+0054

0x55 uu+ff35 u u+0055

0x56 vu+ff36 v u+0056

0x57 wu+ff37 w u+0057

0x58 xu+ff38 x u+0058

0x59 yu+ff39 y u+0059

0x5a zu+ff3a z u+005a

0x5b [u+ff3b [ u+005b

0x5c \u+ff3c / u+005c

0x5d ]u+ff3d ] u+005d

0x5e ^u+ff3e ^ u+005e

0x5f _u+ff3f _ u+005f

0x60 `u+ff40 ` u+0060

0x61 au+ff41 a u+0061

0x62 bu+ff42 b u+0062

0x63 cu+ff43 c u+0063

0x64 du+ff44 d u+0064

0x65 eu+ff45 e u+0065

0x66 fu+ff46 f u+0066

0x67 gu+ff47 g u+0067

0x68 hu+ff48 h u+0068

0x69 iu+ff49 i u+0069

0x6a ju+ff4a j u+006a

0x6b ku+ff4b k u+006b

0x6c lu+ff4c l u+006c

0x6d mu+ff4d m u+006d

0x6e nu+ff4e n u+006e

0x6f ou+ff4f o u+006f

0x70 pu+ff50 p u+0070

0x71 qu+ff51 q u+0071

0x72 ru+ff52 r u+0072

0x73 su+ff53 s u+0073

0x74 tu+ff54 t u+0074

0x75 uu+ff55 u u+0075

0x76 vu+ff56 v u+0076

0x77 wu+ff57 w u+0077

0x78 xu+ff58 x u+0078

0x79 yu+ff59 y u+0079

0x7a zu+ff5a z u+007a

0x7b {u+ff5b u+007d

0x7e ~u+ff5e ~ u+007e

*/

全形半形轉換函式

轉全形的函式 sbc case 任意字串 全形字串 全形空格為12288,半形空格為32 其他字元半形 33 126 與全形 65281 65374 的對應關係是 均相差65248 public string tosbc string input if c i 127 c i char c i 65...

全形半形轉換函式

轉全形的函式 sbc case 任意字串 全形字串 全形空格為12288,半形空格為32 其他字元半形 33 126 與全形 65281 65374 的對應關係是 均相差65248 public string tosbc string input if c i 127 c i char c i 65...

全形半形轉換函式

1.轉全形的函式 sbc case 任意字串 全形字串 全形空格為12288,半形空格為32 其他字元半形 33 126 與全形 65281 65374 的對應關係是 均相差65248 public string tosbc string input if c i 127 c i char c i ...