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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











全角と半角の違い: 1. 文字が占めるスペース、2. 文字の表現、3. 入力方法のステータス、4. 本質的な違い、5. システム コマンドの使用。詳細な紹介: 1. 文字占有スペース、全角文字は 2 つの標準文字位置を占有し、半角文字は 1 つの標準文字位置を占有します; 2. 文字表現、全角は、1 つの文字が 2 つの標準文字位置を占有することを指します。は漢字またはその他の種類の文字であり、半角は文字が標準の文字位置を占めることを意味し、通常は英語の文字、数字、記号などに使用されます。

日常生活の中で「全角」と「半角」の問題に遭遇することは多いですが、その意味や違いを深く理解している人は少ないかもしれません。全角と半角は実際には文字エンコード方式の概念であり、コンピュータの入力、編集、植字などに特別な用途があります。この記事では、全角と半角の違い、切り替えテクニック、実際のアプリケーションについて詳しく説明します。まず、漢字における全角と半角の定義は、全角文字は1文字位置を占め、半角文字は1文字位置の半分を占めます。コンピューターでは、パスします

全角と半角は、中国語の入力方法における 2 つの異なる入力状態を指します。全角は各文字が全角の文字位置を占めることを意味し、半角は各文字が半角の文字位置を占めることを意味します。コンピューターを使用して中国語を入力する場合、さまざまな入力シナリオに適応するために全角と半角を切り替える必要がある場合があります。次に、中国語入力で全角と半角を切り替える方法を誰でも簡単に学べるように、一般的に使用される全角と半角の切り替え方法をいくつか紹介します。方法 1: ショートカット キーを使用して全角と半角を切り替えるほとんどの中国語入力方式ソフトウェアでは、

中国語の入力方法には全角と半角の2つの方法がありますが、中には全角と半角の違いがわからない友達もたくさんいます。全角と半角の入力方法を区別してください。句読点は半角のまま使用でき、スペースについては特に制限はありません。全角状態では、スペースバーの機能が変わります。全角状態に切り替えてスペースバーを押すと、文字間の距離が広くなり、その隙間が半角状態よりも顕著に現れます。また、全角状態では英文字の表示も異なります。半角状態では、入力された英語文字は通常の大きさになります。ただし、全角モードに切り替えると、入力された英語の文字が太字で拡大されることがわかります。全体的に

ユーザーが通常入力メソッドを使用してテキストを挿入する場合、文字や記号の違いに気づくことがありますが、これは主に半角文字と全角文字の切り替えの違いによるものです。ここでは全角と半角の変換を素早く実現する方法を詳しく紹介します。 Windows で全角と半角を切り替えるショートカット キー ソリューション: Alt+Shift これは、全角と半角の入力モードを切り替えるために最も一般的に使用されるキーです。中国語入力環境では、このキーを押すと英語モードに、押さないと中国語モードに切り替わります。コンピュータに複数の入力方法がインストールされている場合、このキーを使用して入力方法を簡単に切り替えることもできます。解決策 2: Ctrl+Shift も全角と半角を切り替えるショートカット キーの 1 つです。このキーの組み合わせは英語入力モードで押されます。

全角スペースと半角スペースは、中国語と日本語でよく使用される 2 つのスペース文字であり、組版、テキスト編集、入力方法において機能上の特徴が異なります。この記事では、全角スペースと半角スペースの特徴と適用シナリオについて詳しく説明し、読者がこれら 2 つのスペース文字をよりよく理解して使用できるようにします。まずは全角スペースの特徴を理解しましょう。 Unicode における全角スペースのエンコードは U+3000 で、通常の漢字と同じ幅で、中国語植字の空白スペースとしてよく使用されます。全角スペースの使用シナリオには次のようなものがあります。

現代のインターネット時代では、私たちはコンピューターでテキストを入力したり編集したりすることがよくあります。この過程で、全角と半角の切り替えの問題が発生することがあります。全角と半角とは文字が占める位置の大きさを表し、全角文字は1文字幅、半角文字は1文字幅の半分を占めます。全角と半角を正しく使用することは、テキストの書式設定と均一性を確保するために非常に重要です。そのため、全角と半角の切り替えスキルを習得する必要があります。まず、全角と半角の概念を理解しましょう。全角文字とは一般的に

タイトル: 入力方法で全角モードと半角モードを簡単に切り替える方法 コンピューターを毎日使用する場合、さまざまな入力シナリオやニーズに適応するために、全角と半角を切り替える必要がよくあります。全角モードは通常、漢字、英語、句読点、数字などの入力に使用され、半角モードは英語や数字の入力に適しています。しかし、入力方法に戸惑ったり、全角と半角を簡単に切り替える方法が分からなかったりする人も多いのではないでしょうか。この記事では、全角と半角の入力方法を簡単に切り替える簡単な方法をいくつか紹介します。
