首頁 > 資料庫 > mysql教程 > SQLSERVER中的全角和半角

SQLSERVER中的全角和半角

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-07 15:52:06
原創
1637 人瀏覽過

/*--全角/半角转换 转换说明 全角字符从的unicode编码从65281~65374 半角字符从的unicode编码从 33~126 空比较特殊,全角为 12288,半角为 32 而且除空外,全角/半角按unicode编码排序在顺序上是对应的 所以可以直接通过用-法来处理非空数据,对空单独处理 like

 /*--全角/半角转换

转换说明
全角字符从的unicode编码从65281~65374
半角字符从的unicode编码从 33~126
空格比较特殊,全角为 12288,半角为 32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则 COLLATE Latin1_General_BIN
是保证字符顺序按unicode编码排序

 

创建以下函数


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)

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
tp6連線sqlserver資料庫問題
來自於 1970-01-01 08:00:00
0
0
0
php 如何呼叫sqlserver的分頁儲存過程
來自於 1970-01-01 08:00:00
0
0
0
php 7.2.10 連結 SQLserver2008r2 報錯
來自於 1970-01-01 08:00:00
0
0
0
Laravel 中無法連線 SQL Server
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板