搜索
首页数据库mysql教程MySQL全角转换为半角_MySQL


?
序言:
用户注册时候,录入了全角手机号码,所以导致短信系统根据手机字段发送短信失败,现在问题来了,如何把全角手机号码变成半角手机号码?



1,手机号码全角转换成半角
先查询出来全角半角都存在的手机号码的数据
SELECT a.username ,COUNT(1) AS num
FROM(
SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(uu.user_name,'0','0'),'1','1'),'2','2'),'3','3'),'4','4') ,'5','5'),'6','6'),'7','7') ,'8','8'),'9','9') AS username
FROM UC_USER uu WHERE uu.`USER_NAME` IS NOT NULL
)a GROUP BY a.username HAVING (COUNT(1)>1)
;
得到如下重复记录:
("MB.134xx76802x" ,
"MB.136xx88105x" ,
"MB.152xx80801x" ,
"MB.157xx49518x" ,
"MB.186xx88282x" ,
"MB.189xx94855x" ); )


然后删除掉已经存在半角的全角手机号码记录,不然转换后会有重复的手机号码。
DELETE FROM `UC_USER`
WHERE MOBILE LIKE '%1%'
AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(user_name,'0','0'),'1','1'),'2','2'),'3','3'),'4','4') ,'5','5'),'6','6'),'7','7') ,'8','8'),'9','9')
IN("MB.134xx76802x" ,
"MB.136xx88105x" ,
"MB.152xx80801x" ,
"MB.157xx49518x" ,
"MB.186xx88282x" ,
"MB.189xx94855x" );


之后再修改全角手机号码为半角手机号码
UPDATE UC_USER uu
SET uu.`MOBILE`=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(uu.`MOBILE`,'0','0'),'1','1'),'2','2'),'3','3'),'4','4') ,'5','5'),'6','6'),'7','7') ,'8','8'),'9','9'),
uu.`USER_NAME`=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(uu.user_name,'0','0'),'1','1'),'2','2'),'3','3'),'4','4') ,'5','5'),'6','6'),'7','7') ,'8','8'),'9','9')
WHERE uu.`MOBILE` IS NOT NULL;


2,如何把所以的全角转换成半角
上面只是人为用比较笨拙的10个replace将全角转换成了半角,有没有一种通用的思路或者方法来实现呢?于是google了很多资料,写下如下的存储函数。
DELIMITER $$
USE csdn $$
CREATE FUNCTION `csdn`.`func_convert`(p_str VARCHAR(200),flag INT)
RETURNS VARCHAR(200)
BEGIN
DECLARE pat VARCHAR(8);
DECLARE step INT ;
DECLARE i INT ;
DECLARE spc INT;
DECLARE str VARCHAR(200);

SET str=p_str;
IF flag=0 THEN /**全角换算半角*/
SET pat= N'%[!-~]%' ;
SET step= -65248 ;
SET str = REPLACE(str,N' ',N' ');
ELSE /**半角换算全角*/
SET pat= N'%[!-~]%' ;
SET step= 65248 ;
SET str= REPLACE(str,N' ',N' ') ;
END IF;

SET i=LOCATE(pat,str) ;
loop1:WHILE i>0 DO
/**开始将全角转换成半角*/
SET str= REPLACE(str, SUBSTRING(str,i,1), CHAR(UNICODE(SUBSTRING(str,i,1))+step));
SET i=INSTR(str,pat) ;
END WHILE loop1;
RETURN(str)
END $$
DELIMITER ;



3,google出来的sqlserver中的全角半角转换函数。
DELIMITER $$


CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `test`.`u_convert`(@str NVARCHAR(4000),@flag BIT )
RETURNS NVARCHAR
BEGIN
DECLARE @pat NVARCHAR(8);
DECLARE @step INTEGER;
DECLARE @i INTEGER;
DECLARE @spc INTEGER;
IF @flag=0
BEGIN
SELECT N'%[!-~]%' INTO @pat;
SELECT -65248 INTO @step;
SELECT REPLACE(@str,N' ',N' ') INTO @str;
END
ELSE
BEGIN
SELECT N'%[!-~]%' INTO @pat;
SELECT 65248 INTO @step;
SELECT REPLACE(@str,N' ',N' ') INTO @str;
END
SELECT patindex(@pat COLLATE LATIN1_GENERAL_BIN,@str) INTO @i;
WHILE @i>0 DO
SELECT REPLACE(@str, SUBSTRING(@str,@i,1), NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step)) INTO @str;
SELECT patindex(@pat COLLATE LATIN1_GENERAL_BIN,@str) INTO @i;
END WHILE
RETURN(@str)
END $$
DELIMITER ;


----------------------------------------------------------------------------------------------------------------

原博客地址: http://blog.itpub.net/26230597/viewspace-1316445/
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
全角和半角的区别全角和半角的区别Jan 05, 2024 pm 04:27 PM

全角和半角的区别:1、字符的占用空间;2、字符的表示;3、输入法的状态;4、本质区别;5、系统命令的使用。详细介绍:1、字符的占用空间,全角字符占用两个标准字符位置,而半角字符占用一个标准字符位置;2、字符的表示,全角指的是一个字符占用两个标准字符位置,不论是汉字还是其他类型的字符,而半角则是指一个字符占用一个标准的字符位置,通常用于英文字母、数字和符号等等。

认识全角和半角:切换技巧一览认识全角和半角:切换技巧一览Mar 25, 2024 pm 01:36 PM

在日常生活中,我们经常会遇到全角和半角的问题,但可能很少有人深入了解它们的含义和区别。全角和半角,实际上是一种字符编码方式的概念,而在电脑输入、编辑、排版等方面都有其特殊的应用。本文将深入探讨全角和半角的区别、切换技巧以及在实际生活中的应用。首先,全角和半角在汉字文字领域中的定义是:一个全角字符占用一个字符位置,而一个半角字符占用半个字符位置。在计算机中,通

轻松学会全角半角切换方法轻松学会全角半角切换方法Mar 25, 2024 pm 03:42 PM

全角半角是指中文输入法中的两种不同输入状态。全角是指每个字符占用一个全角字符位置,而半角则是每个字符占用一个半角字符位置。在使用电脑输入中文时,有时候需要在全角和半角之间进行切换,以适应不同的输入场景。接下来我们就来介绍几种常用的全角半角切换方法,让大家轻松学会如何在中文输入中进行全角半角的切换。方法一:使用快捷键切换全角半角在大多数中文输入法软件中,可以使

输入法全角和半角有什么区别输入法全角和半角有什么区别Feb 14, 2024 pm 02:00 PM

我们在使用中文输入法打字的时候,会有全角和半角两种方式,在这其中还有很多的小伙伴不是很了解全角和半角有什么区别,那下面就来看一下输入法全角和半角的区别吧。半角状态下可以使用任何标点符号,对于空格也没有特殊限制。而在全角状态下,空格键的作用有所变化。切换至全角状态后,按下空格键,我们会发现字符之间的距离变得很大,与半角状态相比,这种间隔更为明显。此外,在全角状态下,英文字母的显示也有所不同。在半角状态下,打出的英文字母大小正常。然而,一旦切换至全角状态,我们会发现打出的英文字母变得加粗且放大。在全

windows中全角与半角之间的切换快捷键windows中全角与半角之间的切换快捷键Mar 04, 2024 pm 06:52 PM

在用户平时运用输入法进行文字插入时,可能会察觉到字母或符号间存在差异,这主要是由于半角与全角符的不同切换导致。这里,将为你详细介绍如何快捷地实现全角与半角之间的转换。windows中全角与半角之间的切换快捷键解决方案一:Alt+Shift此为最常用的全角与半角输入模式切换键。在中文输入环境时,按下此键即转为英语模式,反之则切换至中文状态。若计算机上安装有多语种输入法,同样可通过此键轻松地在各输入法间自由切换。解决方案二:Ctrl+Shift同属全角半角切换快捷键之列。该组合键在英文输入模式下按下

详解全角空格和半角空格的功能特点详解全角空格和半角空格的功能特点Mar 25, 2024 pm 07:21 PM

全角空格和半角空格是在中文和日文中常见的两种空格字符,它们在排版、文本编辑以及输入法中具有不同的功能特点。本文将分别详细解释全角空格和半角空格的特点及应用场景,帮助读者更好地理解和使用这两种空格字符。首先,我们先来了解全角空格的特点。全角空格在Unicode中的编码是U+3000,宽度与一般的中文字符相同,通常用于中文排版中的空白处。全角空格的使用场景包括但

快速掌握全角半角切换技巧快速掌握全角半角切换技巧Mar 25, 2024 am 10:57 AM

在现代的互联网时代,我们经常会在电脑上进行文字输入和编辑工作。在这个过程中,我们有时候会遇到全角和半角的切换问题。全角和半角是指字符所占据的位置大小,全角字符占用一个字符宽度,而半角字符占用半个字符宽度。正确使用全角和半角对于保证文本的格式规范和统一非常重要。因此,掌握全角半角的切换技巧是很有必要的。首先,让我们来了解一下全角和半角的概念。全角字符一般指的是

如何在输入法中轻松切换全角和半角模式如何在输入法中轻松切换全角和半角模式Mar 25, 2024 pm 10:00 PM

标题:如何在输入法中轻松切换全角和半角模式在日常使用电脑时,我们常常需要在全角和半角之间进行切换,以适应不同的输入场景和需求。全角模式一般用于输入汉字、英文字符、标点符号和数字等,而半角模式则更适合输入英文和数字。然而,很多人在使用输入法时可能会感到困惑,不知道如何轻松地在全角和半角之间进行切换。本文将介绍一些简单的方法,帮助大家轻松地在输入法中切换全角和半

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器