zoukankan
html css js c++ java
Sql Server 中汉字处理排序规则,全角半角
--
1. 为数据库指定排序规则
CREATE
DATABASE
db COLLATE Chinese_PRC_CI_AS
GO
ALTER
DATABASE
db COLLATE Chinese_PRC_BIN
GO
/**/
/*
====================================
*/
--
2. 为表中的列指定排序规则
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. 为字符变量和参数应用排序规则
DECLARE
@a
varchar
(
10
),
@b
varchar
(
10
)
SELECT
@a
=
'
a
'
,
@b
=
'
A
'
--
使用排序规则 Chinese_PRC_CI_AS
SELECT
CASE
WHEN
@a
COLLATE Chinese_PRC_CI_AS
=
@b
THEN
'
@a=@b
'
ELSE
'
@a<>@b
'
END
--
结果:@a=@b
--
使用排序规则 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
'
发
'
,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.查询区分全角与半角字符
--
测试数据
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
查看全文
相关阅读:
37-Data Volume 之 bind mount
Python encode和decode
Python迭代器,生成器(iterator,generator)详解
Python递归函数
pandas.DataFrame的pivot()和unstack()实现行转列
Python XML解析之DOM
Python XML解析之ElementTree
Oracle 12c用户和安全管理
Oracle 12c RAC 静默安装文档
Oracle 12c RAC 安装文档
原文地址:https://www.cnblogs.com/nosnowwolf/p/1134550.html
最新文章
Statistics : Data Distribution
数据的描述性统计
Python3标准库:hmac密码信息签名与验证
Python3标准库:hashlib密码散列
Python3标准库:zlib GNUzlib压缩
Python3标准库:xml.etree.ElementTree XML操纵API
Python3标准库:dbm UNIX键-值数据库
Python3标准库:shelve对象的持久存储
Python3标准库:pickle对象串行化
Python3标准库:io文本、十进制和原始流I/O工具
热门文章
Python3标准库:codecs字符串编码和解码
46-跨主机网络概述
45-管理 Machine
44-创建 Machine
43-安装 Docker Machine
42-volume 生命周期管理
41-data-packed volume container
40-用 volume container 共享数据
39-如何共享数据?
38-docker managed volume
Copyright © 2011-2022 走看看