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

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

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

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

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

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

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

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

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


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version
Useful JavaScript development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.
