日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sql Server 中汉字处理排序规则,全角半角

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sql Server 中汉字处理排序规则,全角半角 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--1.?為數據庫指定排序規(guī)則
CREATE?DATABASE?db?COLLATE?Chinese_PRC_CI_AS
GO

ALTER?DATABASE?db?COLLATE?Chinese_PRC_BIN
GO


/**//*====================================*/


--2.?為表中的列指定排序規(guī)則
CREATE?TABLE?tb(
col1?
varchar(10),
col2?
varchar(10)?COLLATE?Chinese_PRC_CI_AS)
GO

ALTER?TABLE?tb?ADD?col3?varchar(10)?COLLATE?Chinese_PRC_BIN
GO

ALTER?TABLE?tb?ALTER?COLUMN?col2?varchar(10)?COLLATE?Chinese_PRC_BIN
GO


/**//*====================================*/


--3.?為字符變量和參數應用排序規(guī)則
DECLARE?@a?varchar(10),@b?varchar(10)
SELECT?@a='a',@b='A'

--使用排序規(guī)則?Chinese_PRC_CI_AS
SELECT?CASE?WHEN?@a?COLLATE?Chinese_PRC_CI_AS?=?@b?THEN?'@a=@b'?ELSE?'@a<>@b'?END
--結果:@a=@b

--使用排序規(guī)則?Chinese_PRC_BIN
SELECT?CASE?WHEN?@a?COLLATE?Chinese_PRC_BIN?=?@b?THEN?'@a=@b'?ELSE?'@a<>@b'?END
--結果:@a<>@b
--1.?按拼音排序
DECLARE?@t?TABLE(col?varchar(2))
INSERT?@t?SELECT?''
UNION?ALL?SELECT?''
UNION?ALL?SELECT?''

SELECT?*?FROM?@t?ORDER?BY?col?COLLATE?Chinese_PRC_CS_AS_KS_WS
/**//*--結果
col??
----?



--
*/

GO


/**//*==========================================*/


--2.?漢字首字母查詢處理用戶定義函數
CREATE?FUNCTION?f_GetPY(@str?nvarchar(4000))
RETURNS?nvarchar(4000)
AS
BEGIN
????
DECLARE?@py?TABLE(
????????ch?
char(1),
????????hz1?
nchar(1)?COLLATE?Chinese_PRC_CS_AS_KS_WS,
????????hz2?
nchar(1)?COLLATE?Chinese_PRC_CS_AS_KS_WS)
????
INSERT?@py?SELECT?'A',N'',N''
????
UNION??ALL?SELECT?'B',N'',N'簿'
????
UNION??ALL?SELECT?'C',N'',N''
????
UNION??ALL?SELECT?'D',N'',N''
????
UNION??ALL?SELECT?'E',N'',N''
????
UNION??ALL?SELECT?'F',N'發(fā)',N''
????
UNION??ALL?SELECT?'G',N'',N''
????
UNION??ALL?SELECT?'H',N'',N''
????
UNION??ALL?SELECT?'J',N'',N''
????
UNION??ALL?SELECT?'K',N'',N''
????
UNION??ALL?SELECT?'L',N'',N''
????
UNION??ALL?SELECT?'M',N'',N''
????
UNION??ALL?SELECT?'N',N'',N''
????
UNION??ALL?SELECT?'O',N'',N''
????
UNION??ALL?SELECT?'P',N'',N''
????
UNION??ALL?SELECT?'Q',N'',N''
????
UNION??ALL?SELECT?'R',N'',N''
????
UNION??ALL?SELECT?'S',N'',N''
????
UNION??ALL?SELECT?'T',N'',N''
????
UNION??ALL?SELECT?'W',N'',N''
????
UNION??ALL?SELECT?'X',N'',N''
????
UNION??ALL?SELECT?'Y',N'',N''
????
UNION??ALL?SELECT?'Z',N'',N''
????
DECLARE?@i?int
????
SET?@i=PATINDEX('%[吖-做]%'?COLLATE?Chinese_PRC_CS_AS_KS_WS,@str)
????
WHILE?@i>0
????????
SELECT?@str=REPLACE(@str,SUBSTRING(@str,@i,1),ch)
????????????,
@i=PATINDEX('%[吖-做]%'?COLLATE?Chinese_PRC_CS_AS_KS_WS,@str)
????????
FROM?@py
????????
WHERE?SUBSTRING(@str,@i,1)?BETWEEN?hz1?AND?hz2
????
RETURN(@str)
END
GO

--1.查詢區(qū)分全角與半角字符
--
測試數據
DECLARE?@t?TABLE(col?varchar(10))
INSERT?@t?SELECT?'aa'
UNION?ALL?SELECT?'Aa'
UNION?ALL?SELECT?'AA'??????--全角A
UNION?ALL?SELECT?'A,A'????????--全角A,半角逗號(,)
UNION?ALL?SELECT?'A,A'????--全角A,全角逗號(,)

--1.查大寫字母
SELECT?*?FROM?@t
WHERE?col?COLLATE?Chinese_PRC_CS_AS_WS?like?'%A%'

--2.查全角字母
SELECT?*?FROM?@t
WHERE?col?COLLATE?Chinese_PRC_CS_AS_WS?like?'%A%'

--3.查半角逗號(,)
SELECT?*?FROM?@t
WHERE?col?COLLATE?Chinese_PRC_CS_AS_WS?like?'%,%'

--3.查全角逗號(,)
SELECT?*?FROM?@t
WHERE?col?COLLATE?Chinese_PRC_CS_AS_WS?like?'%,%'
GO


/**//*=============================================*/


--2?實現全角與半角字符轉換的處理函數
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

轉載于:https://www.cnblogs.com/nosnowwolf/archive/2008/04/02/1134550.html

總結

以上是生活随笔為你收集整理的Sql Server 中汉字处理排序规则,全角半角的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。