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,1BETWEEN 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

转载于:https://www.cnblogs.com/nosnowwolf/archive/2008/04/02/1134550.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决局域网设置固定IP后无法上网?

1.cmd中输入ipconfig /all查看ip和dns的状态 2.查看自动获取的dns是什么,然后手动设置ip和dns时,和自动获取的保持一样即可 注解&#xff1a;设置后还是无法上网后主要检查ip与dns是否设置错误. 转载于:https://www.cnblogs.com/yanans/p/11301061.html

鼠标输入

一、隐藏并捕捉光标 偏航角和俯仰角是通过鼠标移动获得的&#xff0c;水平的移动影响偏航角&#xff0c;竖直的移动影响俯仰角。 原理是&#xff0c;存储上一帧鼠标的位置&#xff0c;在当前帧中计算鼠标位置与上一帧的位置相差多少。如果水平/竖直差别越大&#xff0c;那么俯仰…

c#用canny算子做边缘提取_机器视觉学习(三)边缘检测

一、边缘检测二、边缘检测流程三、Canny边缘检测前言边缘检测是图像处理和计算机视觉中&#xff0c;尤其是特征提取中的一个研究领域。有许多方法用于边缘检测&#xff0c;它们的绝大部分可以划分为两类&#xff1a;基于一阶导数首先计算边缘强度&#xff0c; 通常用一阶导数表…

一个有关Update类型的存储过程的问题

CREATE PROCEDURE testupdateproc AS declare id int declare trandate datetime declare tranlimit int update test set trandatetrandate, tranlimittranlimit where test.idid GO 存储过程语句如上&#xff0c;检查语法是没有问题的&#xff0c;但是在程序中执行时却不行…

[20190805]在小程序中使用npm包

小程序是可以使用npm包的 1. 初始化npm&#xff1b;&#xff08;在项目目录下输入&#xff09; npm init 此时项目文件夹会创建一个配置信息的package.json文件 2. 手动新建node_modules文件夹&#xff1b;&#xff08;在项目目录下新建&#xff09; 3. 安装npm包&#xff1b; …

bindresult必须在哪个位置_手机视频剪辑工具哪个好?清爽视频编辑APP有人推荐吗?...

作为一个非常喜欢旅游的人&#xff0c;每次出门在外都喜欢发各种照片&#xff0c;以前发照片觉得就能够表达自己的状态和心情&#xff0c;但是随着时间的变化发现&#xff0c;身边的人都开始喜欢发视频了。此前在飞机上拍摄了一段觉得不错的天空视频&#xff0c;想要制作成短片…

[转] 能ping通,但不能上网.

一、感染了病毒所致这种情况往往表现在打开IE时&#xff0c;在IE界面的左下框里提示&#xff1a;正在打开网页&#xff0c;但老半天没响应。在任务管理器里查看进程&#xff0c;&#xff08;进入方法&#xff0c;把鼠标放在任务栏上&#xff0c;按右键—任务管理器—进程&#…

Gradle打包命令记录

Gradle打包命令记录第一种方式&#xff1a;gradle build执行后在在build/lib下生成war包第二种方式&#xff1a;gradle cleangradle --refresh-dependencies assemble

浅谈ASP中Web页面间的数据传递

【简 介】  基于Web的动态网页设计必会涉及到页面间的数据传递&#xff0c;文章探讨了ASP设计中常用的Web页面间的数据传递方式&#xff0c;分析各种数据传递方式的使用方法、使用场合及优缺点&#xff0c;其都是设计阶段选择数据传递方式考虑的关键 往往使用动态网页技术制作…

变频电源出现故障了怎么办,该如何去诊断呢

在变频电源使用时间过长之后就会出现一些小故障&#xff0c;在出现这些小故障的时候很多人都不知道问题出在哪&#xff0c;今天中港扬盛的技术员教你如何的快速诊断变频电源的故障方法。只有及时的发现&#xff0c;这样就能够有效地去解决变频电源所出现的故障。下面就是变频电…

无法访问你试图使用的功能所在的网络位置_[steam实用工具]解决无法访问商店/社区/好友列表的问题...

[steam实用工具]解决无法访问商店/社区/好友列表的问题在我们使用steam的过程中&#xff0c;由于某些原因&#xff0c;在访问商店/社区/好友列表时会被受到限制。针对这种情况&#xff0c;国内的大神些开发出了以下工具来解决我们访问的难题。本文章中的软件由“羽翼诚"大…

tomcat6.0+mysql5.0+jdk5.0+myeclipse6.0打造JSP开发平台

1.下载tomcat6.0(http://tomcat.apache.org/download-60.cgi), mysql5.0(http://download.mysql.cn/src/2006/0710/5543.html), jdk5.0(http://download.mysql.cn/src/2006/0710/5543.html)以及myeclipse6.0(http://www.myeclipseide.com/module-htmlpages-display-pid-4.html)…

程序设计中的感悟

1. 学习应该从基础打起&#xff0c;不要一开始就尝试最高深的技术。 2. 每看一本书&#xff0c;不要说这章我以前学习过了&#xff0c;也掌握的很好&#xff0c;因此我可以跳过这一章看更重要的了。 3. 对于作业&#xff0c;遇到不会的尽量不要立刻向别人请教。如果实在解决…

(转)用Java获得当前性能信息

(转&#xff09;用Java获得当前性能信息 http://www.blogjava.net/amigoxie/archive/2008/04/30/197564.html在Java中&#xff0c;可以获得总的物理内存、剩余的物理内存、已使用的物理内存等信息&#xff0c;本例讲解如何取得这些信息&#xff0c;并且获得在Windows下的内存使…

docker wsl2启动不了_Docker学习笔记

在笔记本上主要还是想以轻量、方便为主&#xff0c;所以采用的是在WSL2中使用docker的这么一个方案。WSL2我笔记本原来是预装的是WIN10家庭版&#xff0c;需要先升级为专业版&#xff0c;并加入windows预览体验计划。更新完之后&#xff0c;安装WSL&#xff0c;我选择的是Ubunt…

暑假集训-8.06总结

学习内容&#xff1a; 搜索 今日完成题数&#xff08;不包含多校&#xff09;&#xff1a;4 今日看书情况&#xff1a;15页 今日心得&#xff1a; 今天学的是搜索&#xff0c;虽然以前学过&#xff0c;但书上讲的更具体些&#xff0c; 比如说如何去优化搜索的次数等 英语题目好…

网易马进:DDB从分布式数据库到结构化数据中心的架构变迁

导语&#xff1a; 本文根据马进老师在2018年5月10日【第九届中国数据库技术大会(DTCC)】现场演讲内容整理而成。马进 网易 DDB项目负责人来自网易杭研大数据平台组&#xff0c;入职以来先后参与了分布式数据库DDB&#xff0c;缓存NKV&#xff0c;网易数据运河NDC等项目&#xf…

element label动态赋值_浅析 vuerouter 源码和动态路由权限分配

背景上月立过一个 flag&#xff0c;看完 vue-router 的源码&#xff0c;可到后面逐渐发现 vue-router 的源码并不是像很多总结的文章那么容易理解&#xff0c;阅读过你就会发现里面的很多地方都会有多层的函数调用关系&#xff0c;还有大量的 this 指向问题&#xff0c;而且会有…

MessagePack Java 0.6.X List, Map 对象的序列化和反序列化

为了序列化原生的容器对象例如 List 和 Map 对象&#xff0c;你必须使用 Template。 Template 对象是 serializer 和 deserializer 的配对。例如&#xff0c;为了序列化一个 List 对象&#xff0c;在 List 对象中 Integer 对象为元素&#xff0c;你可以使用下面的方法来创建一…

世界领先的界面设计公司:The Skins Factory

该公司的网站&#xff1a; http://www.theskinsfactory.com/skinsfactory/ 该公司诞生于2000年&#xff0c;由一群狂热的界面爱好者&#xff0c;带着对GUI的热情和大胆的洞察力创立。很快&#xff0c;皮肤工厂便成长为世界领先的、真正的、革命性界面解决方案提供商。 更多的精…