SQL 全形和半形轉換

2021-04-30 15:54:29 字數 1773 閱讀 9543

首先我們來看乙個測試**:

select

cast('

111'

asint

) as

num1

code

ifobject_id(n'

u_convert',n

'fn') 

isnot

null

drop

function

u_convert

go/*

轉換原理 

全形字符unicode編碼從65281~65374  

半形字元unicode編碼從33~126  

空格比較特殊,全形為 12288,半形為   32  

而且除空格外,全形/半形按unicode編碼排序在順序上是對應的  

所以可以直接通過用+-法來處理非空格資料,對空格單獨處理  

like的時候,指定排序規則   collate   latin1_general_bin  

是保證字元順序按unicode編碼排序  

*/create

function

u_convert(  

@str

nvarchar

(4000

),   

--要轉換的字串  

@flag

bit--

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

)returns

nvarchar

(4000

)  as

begin

declare

@pat

nvarchar(8

),@step

int,

@iint

,@spc

intif

@flag=0

begin

select

@pat=n

'%[!-~]%',

@step

=-65248

,  @str

=replace

(@str,n'

',n''

)  end

else

begin

select

@pat=n

'%[!-~]%',

@step

=65248

,  @str

=replace

(@str,n'

',n''

)  end

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

)  endgo

測試語句:

select dbo.u_convert('11',1) as [a],'11' as [b],dbo.u_convert('111',0) as [c]

C 全形和半形轉換

在計算機螢幕上,乙個漢字要佔兩個英文本元的位置,人們把乙個英文本元所佔的位置稱為 半形 相對地把乙個漢字所佔的位置稱為 全形 在漢字輸入時,系統提供 半形 和 全形 兩種不同的輸入狀態,但是對於英文本母 符號和數字這些通用字元就不同於漢字,在半形狀態它們被作為英文本元處理 而在全形狀態,它們又可作為...

字元轉換 全形和半形轉換

在我們使用搜狗輸入法的時候會有全形和半形的切換,首先看一下這兩者的區別吧 全形,指乙個字元占用兩個標準字元位置的狀態,也是排字的度量單位,寬度等於所使用的文字的磅數漢。半形,即乙個字元占用乙個標準字元的位置,排字的量度單位,寬度等於同一磅數全形的一半。全形和半形的使用 1 在中文輸入法中,切換全形和...

全形字符轉換為半形,判斷半形和全形

判斷字元是否英文半形字元或標點 32 空格 33 47 標點 48 57 0 9 58 64 標點 65 90 a z 91 96 標點 97 122 a z 123 126 標點 public static bool isbjchar char c 判斷字元是否全形字符或標點 全形字符 65248...