데이터 베이스 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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

전각과 반각의 차이 전각과 반각의 차이 Jan 05, 2024 pm 04:27 PM

전각과 반각의 차이점: 1. 문자가 차지하는 공간 2. 문자의 표현 3. 입력 방법의 상태 5. 시스템 명령의 사용 세부 소개: 1. 문자 점유 공간, 전각 문자는 두 개의 표준 문자 위치를 차지하고 반각 문자는 하나의 표준 문자 위치를 차지합니다. 2. 문자 표현, 전각 문자는 두 개의 표준 문자 위치를 차지합니다. 한자 또는 기타 종류의 문자를 말하며, 반각은 한 문자가 표준 문자 위치를 차지하는 것을 의미하며, 일반적으로 영문자, 숫자, 기호 등에 사용됩니다.

전폭 및 반폭 이해: 전환 기술 살펴보기 전폭 및 반폭 이해: 전환 기술 살펴보기 Mar 25, 2024 pm 01:36 PM

일상생활에서 우리는 전각과 반각의 문제에 자주 직면하지만, 그 의미와 차이점을 깊이 이해하는 사람은 거의 없습니다. 전각과 반각은 실제로 문자 인코딩 방법의 개념이며 컴퓨터 입력, 편집, 조판 등에 고유한 특수 응용 프로그램이 있습니다. 이 기사에서는 전체 너비와 절반 너비의 차이점, 스위칭 기술 및 실제 응용 프로그램을 자세히 살펴보겠습니다. 우선, 한자 분야에서 전각과 반각의 정의는 전각자가 한 글자 위치를 차지하고, 반각자는 반자 위치를 차지한다는 것이다. 컴퓨터에서는 패스

전각과 반각 사이를 전환하는 방법을 쉽게 알아보세요. 전각과 반각 사이를 전환하는 방법을 쉽게 알아보세요. Mar 25, 2024 pm 03:42 PM

전각과 반각은 중국어 입력 방법에서 서로 다른 두 가지 입력 상태를 나타냅니다. 전각은 각 문자가 전각 문자 위치를 차지하는 것을 의미하고, 반각은 각 문자가 반각 문자 위치를 점유한다는 것을 의미합니다. 컴퓨터를 사용하여 중국어를 입력할 때 다양한 입력 시나리오에 적응하기 위해 전자와 반자 사이를 전환해야 하는 경우가 있습니다. 다음으로, 중국어 입력에서 전각과 반각 사이를 전환하는 방법을 누구나 쉽게 익힐 수 있도록 일반적으로 사용되는 몇 가지 전각 및 반각 전환 방법을 소개합니다. 방법 1: 단축키를 사용하여 전각과 반각 사이를 전환할 수 있습니다. 대부분의 중국어 입력기 소프트웨어에서는 다음을 사용할 수 있습니다.

전각 입력 방법과 반각 입력 방법의 차이점은 무엇입니까? 전각 입력 방법과 반각 입력 방법의 차이점은 무엇입니까? Feb 14, 2024 pm 02:00 PM

우리가 중국어 입력 방식을 사용할 때 전각과 반각의 두 가지 방법이 있는데 그 중 전각과 반각의 차이를 모르는 친구들이 많습니다. 전각과 반각 입력 방법으로 차이를 만드세요. 반각 상태에서는 모든 구두점을 사용할 수 있으며 공백에 대한 특별한 제한은 없습니다. 전체 너비 상태에서는 스페이스바의 기능이 변경됩니다. 전각 상태로 전환하고 스페이스바를 누르면 문자 사이의 거리가 넓어지고 이 간격은 반각 상태보다 더 뚜렷해집니다. 또한, 전각 상태에서는 영문자의 표시도 다릅니다. 반각 상태에서는 입력되는 영문자가 보통 크기로 됩니다. 그러나 전체 너비 모드로 전환하면 입력된 영문자가 굵게 표시되고 확대되는 것을 볼 수 있습니다. 전체에서

Windows에서 전체 너비와 절반 너비 사이를 전환하는 바로 가기 키 Windows에서 전체 너비와 절반 너비 사이를 전환하는 바로 가기 키 Mar 04, 2024 pm 06:52 PM

사용자가 일반적으로 텍스트를 삽입하기 위해 입력 방법을 사용할 때 문자나 기호 사이의 차이를 느낄 수 있습니다. 이는 주로 반자와 전자 사이의 전환이 다르기 때문입니다. 여기에서는 전각과 반각 간의 변환을 빠르게 구현하는 방법을 자세히 소개합니다. 창에서 전체 너비와 절반 너비 사이를 전환하기 위한 바로 가기 키 솔루션: Alt+Shift 이것은 전체 너비와 절반 너비 입력 모드 사이를 전환하는 데 가장 일반적으로 사용되는 키입니다. 중국어 입력 환경에서 이 키를 누르면 영어 모드로 전환되고, 그렇지 않으면 중국어 모드로 전환됩니다. 컴퓨터에 여러 입력 방법이 설치되어 있는 경우 이 키를 사용하여 입력 방법 간에 쉽게 전환할 수도 있습니다. 해결 방법 2: Ctrl+Shift도 전체 너비와 절반 너비 사이를 전환하는 바로 가기 키 중 하나입니다. 이 키 조합은 영어 입력 모드에서 눌려집니다

전각 공백과 반각 공백의 기능적 특징에 대한 자세한 설명 전각 공백과 반각 공백의 기능적 특징에 대한 자세한 설명 Mar 25, 2024 pm 07:21 PM

전각 공백과 반각 공백은 중국어와 일본어에서 흔히 사용되는 두 공백 문자로 조판, 텍스트 편집, 입력 방법에서 기능적 특성이 다릅니다. 이 글에서는 전각 공백과 반각 공백의 특성과 응용 시나리오를 자세히 설명하여 독자가 이 두 공백 문자를 더 잘 이해하고 사용할 수 있도록 돕습니다. 먼저 전폭공간의 특징을 이해해보자. 유니코드의 전각 공백 인코딩은 U+3000입니다. 너비는 일반적으로 중국어 조판에서 공백에 사용됩니다. 전폭 공간의 사용 시나리오는 다음과 같습니다.

전각과 반각 사이를 전환하는 기술을 빠르게 익히세요 전각과 반각 사이를 전환하는 기술을 빠르게 익히세요 Mar 25, 2024 am 10:57 AM

현대 인터넷 시대에 우리는 컴퓨터로 텍스트를 입력하고 편집하는 경우가 많습니다. 이 과정에서 전각과 반각 사이를 전환하는 문제가 발생하는 경우가 있습니다. 전각과 반각은 문자가 차지하는 위치의 크기를 의미하며, 전각 문자는 한 문자 폭을 차지하고, 반각 문자는 문자 폭의 절반을 차지합니다. 전체 너비와 절반 너비를 올바르게 사용하는 것은 텍스트의 형식과 통일성을 보장하는 데 매우 중요합니다. 따라서 전폭과 반폭의 전환 기술을 익히는 것이 필요합니다. 먼저 전각(full-width)과 반각(half-width)의 개념을 이해해보자. 전자 문자는 일반적으로 다음을 나타냅니다.

입력 방법에서 전각 모드와 반각 모드 간을 쉽게 전환하는 방법 입력 방법에서 전각 모드와 반각 모드 간을 쉽게 전환하는 방법 Mar 25, 2024 pm 10:00 PM

제목: 입력 방법에서 전각 모드와 반각 모드 사이를 쉽게 전환하는 방법 일상적으로 컴퓨터를 사용할 때 다양한 입력 시나리오와 요구에 적응하기 위해 전각 모드와 반각 모드 사이를 전환해야 하는 경우가 많습니다. 전각 모드는 일반적으로 한자, 영문자, 구두점, 숫자 등을 입력하는 데 사용되는 반면, 반각 모드는 영어와 숫자를 입력하는 데 더 적합합니다. 그러나 많은 사람들은 입력 방법을 사용할 때 혼란을 겪을 수 있으며 전자와 반각 사이를 쉽게 전환하는 방법을 모릅니다. 이 문서에서는 전자 입력 방법과 반자 입력 방법 사이를 쉽게 전환하는 데 도움이 되는 몇 가지 간단한 방법을 소개합니다.

See all articles