首頁 資料庫 mysql教程 MySQL全角转换为半角_MySQL

MySQL全角转换为半角_MySQL

Jun 01, 2016 pm 01:04 PM
一半大小


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



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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

全角和半角的區別 全角和半角的區別 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

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

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

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

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 pm 10:00 PM

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

See all articles