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)
----------------------------------------------------------------------------------------------------------------

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

全角和半角的區別:1、字符的佔用空間;2、字符的表示;3、輸入法的狀態;4、本質區別;5、系統命令的使用。詳細介紹:1、字元的佔用空間,全角字元佔用兩個標準字元位置,而半角字元佔用一個標準字元位置;2、字元的表示,全角指的是一個字元佔用兩個標準字元位置,不論是漢字還是其他類型的字符,而半角則是指一個字符佔用一個標準的字符位置,通常用於英文字母、數字和符號等等。

在日常生活中,我們經常會遇到全角和半角的問題,但可能很少有人深入了解它們的意義和差異。全角和半角,其實是一種字元編碼方式的概念,而在電腦輸入、編輯、排版等方面都有其特殊的應用。本文將深入探討全角和半角的差異、切換技巧以及在實際生活中的應用。首先,全角和半角在漢字文字領域中的定義是:一個全角字元佔用一個字元位置,而一個半角字元佔用半個字元位置。在計算機中,通

全角半角是指中文輸入法中的兩種不同輸入狀態。全角是指每個字元佔用一個全角字元位置,而半角則是每個字元佔用一個半角字元位置。使用電腦輸入中文時,有時需要在全角和半角之間切換,以適應不同的輸入場景。接下來我們就來介紹幾種常用的全角半角切換方法,讓大家輕鬆學會如何在中文輸入中進行全角半角的切換。方法一:使用快速鍵切換全角半角在大多數中文輸入法軟體中,可以使

我們在用中文輸入法打字的時候,會有全角和半角兩種方式,在這其中還有很多的小伙伴不是很了解全角和半角有什麼區別,那下面就來看一下輸入法全角和半角的區別吧。半角狀態下可以使用任何標點符號,對於空格也沒有特殊限制。而在全角狀態下,空白鍵的作用有所變化。切換到全角狀態後,按下空白鍵,我們會發現字元之間的距離變得很大,與半角狀態相比,這種間隔更為明顯。此外,在全角狀態下,英文字母的顯示也有所不同。在半角狀態下,打出的英文字母大小正常。然而,一旦切換到全角狀態,我們會發現打出的英文字母變得加粗且放大。在全

在現代的網路時代,我們經常在電腦上進行文字輸入和編輯工作。在這個過程中,我們有時會遇到全角和半角的切換問題。全角和半角是指字元所佔據的位置大小,全角字元佔用一個字元寬度,而半角字元佔用半個字元寬度。正確使用全角和半角對於確保文字的格式規範和統一性非常重要。因此,掌握全角半角的切換技巧是必要的。首先,讓我們來了解全角和半角的概念。全角字符一般指的是

在使用者平時運用輸入法進行文字插入時,可能會察覺到字母或符號間存在差異,這主要是由於半角與全角符的不同切換導致。這裡,將為你詳細介紹如何快速地實現全角與半角之間的轉換。 windows中全角與半角之間的切換快捷鍵解決方案一:Alt+Shift此為最常用的全角與半角輸入模式切換鍵。在中文輸入環境時,按下此鍵即轉為英文模式,反之則切換至中文狀態。若電腦上安裝有多語種輸入法,同樣可透過此鍵輕鬆地在各輸入法間自由切換。解二:Ctrl+Shift同屬全角半角切換快速鍵之列。此組合鍵在英文輸入模式下按下

全角空格和半角空格是在中文和日文中常見的兩種空格字符,它們在排版、文字編輯以及輸入法中具有不同的功能特點。本文將分別詳細解釋全角空格和半角空格的特點及應用場景,幫助讀者更能理解並使用這兩種空格字元。首先,我們先來了解全角空格的特性。全角空格在Unicode的編碼是U+3000,寬度與一般的中文字元相同,通常用於中文排版的空白處。全角空格的使用場景包括但

標題:如何在輸入法中輕鬆切換全角和半角模式在日常使用電腦時,我們常常需要在全角和半角之間進行切換,以適應不同的輸入場景和需求。全角模式一般用於輸入漢字、英文字元、標點符號和數字等,而半角模式則較適合輸入英文和數字。然而,許多人在使用輸入法時可能會感到困惑,不知道如何輕鬆地在全角和半角之間進行切換。本文將介紹一些簡單的方法,幫助大家輕鬆地在輸入法中切換全角和半
