mysql 全角空格_数据库使用技巧――SQL全角与半角切换_MySQL
bitsCN.com
数据库系统中,经常有些用户在输入数据的时候会不小心使用全角输入,这就有可能会导致我们的程序出错,如何解决此类问题了。
测试代码:
select cast('111' as int) as num1
select cast('111' as int) as num2
运行结果:
第一个正确显示: 111
第二个则报错: 在将 varchar 值 '111' 转换成数据类型 int 时失败。
下面使用自定义标量函数来解决这个问题:
if object_id(N'u_convert',N'FN') is not 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,
@i int,
@spc int
if @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>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
测试语句:
select cast('111' as int) as num1
select cast('111' as int) as num2
运行结果:
第一个正确显示: 111
第二个则报错: 在将 varchar 值 '111' 转换成数据类型 int 时失败。
下面使用自定义标量函数来解决这个问题:
if object_id(N'u_convert',N'FN') is not 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,
@i int,
@spc int
if @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>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
测试语句:bitsCN.com
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网
mysql 全角空格_数据库使用技巧――SQL全角与半角切换_MySQL相关推荐
- 圆角半角数据库_数据库使用技巧——SQL 全角与半角切换
select cast('111' as int) as num1 select cast('111' as int) as num2 运行结果: 第一个正确显示: 111 第二个则报错: 在将 va ...
- MySql实验嵌套查询_数据库实验:SQL嵌套查询
自测题: 1.查询哪些课程没有人选修列出课程号和课程名: [code]select cno,cname from course where cno not in( select distinct cn ...
- mysql 去除全角空格_去掉全角空格
有时候复制网上的代码会出现编译不通过的问题,报类似这样的一个问题:error: stray '\161' in program.在网上查了一下,就是全角空格的问题.借助于网上的一段Java代码,把它转 ...
- mysql 去除全角空格_去除字符串内多余空格
倒数第二行 就是去除多余空格 原本最后一种写法是网上找来的 可是根本不好使 \\1 匹配数字1或一次吧 (我有点记不清了) "\s" 匹配非空字符 "\x20&quo ...
- java 正则表达式替换多个全角空格为一个半角空格_去掉字符串两端的全角空格和半角空格(含源代码)...
昨天,遇到了一个技术问题.本来我在程序中用的trim()方法来处理从JSP页面传来的值,后来在测试时,发现当我输入的是全角空格时,trim()方法失效. 需求是这样的,只是去掉字符串两端的空格(不论是 ...
- mysql打错了怎么办_数据库出错了怎么办?
下面是网上收集的多种方法,大家可以测试下. (一) 昨晚浏览自己的Blog的时候,突然发现所有页面都无法显示,到后台查看的时候,发现一个"Table 'xxx' is marked as c ...
- 【MySQL 第10章_数据库的设计规范】
第10章_数据库的设计规范 1. 为什么需要数据库设计 2.范式 2.1范式简介 2.2范式都包括哪些 2.3 键和相关属性的概念 2.4第一范式(1st NF) 2.5 第二范式(2nd NF) 2 ...
- java web数据库面试_数据库面试技巧,通过JDBC展示自己专业性,摘自java web轻量级开发面试教程...
importjava.sql.Connection;2 importjava.sql.DriverManager;3 importjava.sql.ResultSet;4 importjava.sql ...
- MySQL删除空值语句_数据库语句sql 删除空记录
最简单删除SQL Server中所有数据的方法 原文:最简单删除SQL Server中所有数据的方法 最简单删除SQL Server中所有数据的方法 编写人:CC阿爸 2014-3-14 其实 ...
最新文章
- 管理邮件用户(附图)---Michaelf
- Set Up Optimization
- Andorid应用去google广告
- python调用chrome插件_Python使用Chrome插件实现爬虫过程图解
- .bam.bai的意义_业务活动监视器(BAM)2.0带来的革命
- 新浪API, 利用get_uid获取是uid的数据溢出问题解决方案
- 详细介绍android rom移植知识普及
- BZOJ4659 Lcm
- 栅栏密码怎么写java程序_栅栏密码
- pdf打印机如何加密pdf文件?
- 基于互联网位置数据的通勤特征挖掘技术
- 建站|全网最系统的色彩搭配指南,教你制作吸睛网站
- 2018年 每日分享一个技术贴
- 光纤收发器结构介绍和故障解决
- Liferay URL
- 阿里校园招聘前端面试
- 图像配准(image registration)与图像融合(image fusion)
- 【JS 逆向百例】层层嵌套!某加速商城 RSA 加密
- 预警| WebLogic Server再曝高危0 day漏洞
- 学生报名管理系统的设计与实现
热门文章
- dos 命令——切换盘符与切换工作目录
- 如何缩小pdf的大小?如何将pdf文件变小一点?
- 关于25岁学编程会不会晚的最佳回答!
- SDB光猫虚拟服务器,折腾光猫/路由器[MIPS架构](1):用Samba服务器搭建家庭文件共享中心...
- 计算机组成:中断向量的相关计算
- 配置阿里云镜像源失败
- 无胁科技-TVD每日漏洞情报-2022-12-12
- 阿里云基于区块链服务构建企业业务系统实践总结
- S3C2450自动升级
- java.lang.IllegalArgumentException: View=DecorView not attached to window manager(Android Dialog崩溃)