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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perbezaan antara lebar penuh dan separuh lebar: 1. Ruang yang diduduki oleh aksara; 3. Status kaedah input; Pengenalan terperinci: 1. Ruang pekerjaan watak, aksara lebar penuh menduduki dua kedudukan aksara standard, manakala aksara separuh lebar menduduki satu kedudukan aksara standard 2. Perwakilan aksara, lebar penuh merujuk kepada satu aksara yang menduduki dua kedudukan aksara standard, sama ada ialah aksara Cina Atau jenis aksara lain, dan separuh lebar bermaksud aksara menduduki kedudukan aksara standard, biasanya digunakan untuk huruf Inggeris, nombor, simbol, dsb.

Dalam kehidupan seharian, kita sering menghadapi masalah lebar penuh dan separuh lebar, tetapi beberapa orang mungkin mempunyai pemahaman yang mendalam tentang makna dan perbezaannya. Lebar penuh dan separuh lebar sebenarnya adalah konsep kaedah pengekodan aksara, dan ia mempunyai aplikasi khas dalam input komputer, penyuntingan, penataan huruf, dsb. Artikel ini akan menyelidiki perbezaan antara lebar penuh dan separuh lebar, teknik penukaran dan aplikasi kehidupan sebenar. Pertama sekali, takrifan lebar penuh dan separuh lebar dalam bidang aksara Cina ialah: aksara lebar penuh menduduki satu kedudukan aksara, dan aksara separuh lebar menduduki separuh kedudukan aksara. Dalam komputer, lulus

Lebar penuh dan separuh lebar merujuk kepada dua keadaan input berbeza dalam kaedah input Cina. Lebar penuh bermakna setiap aksara menduduki kedudukan aksara lebar penuh, manakala separuh lebar bermakna setiap aksara menduduki kedudukan aksara separuh lebar. Apabila menggunakan komputer untuk memasukkan bahasa Cina, kadangkala anda perlu menukar antara lebar penuh dan separuh lebar untuk menyesuaikan diri dengan senario input yang berbeza. Seterusnya, kami akan memperkenalkan beberapa kaedah pensuisan lebar penuh dan separuh lebar yang biasa digunakan, supaya semua orang boleh mempelajari cara menukar antara lebar penuh dan separuh lebar dalam input Cina dengan mudah. Kaedah 1: Gunakan kekunci pintasan untuk bertukar antara lebar penuh dan separuh lebar Dalam kebanyakan perisian kaedah input bahasa Cina, anda boleh gunakan

Apabila kita menggunakan kaedah input Cina untuk menaip, terdapat dua cara: lebar penuh dan lebar separuh Antaranya, terdapat ramai rakan yang tidak tahu perbezaan antara lebar penuh dan lebar pada kaedah input lebar penuh dan separuh lebar Buat perbezaan. Sebarang tanda baca boleh digunakan dalam keadaan separuh lebar, dan tiada sekatan khas pada ruang. Dalam keadaan lebar penuh, fungsi bar ruang berubah. Selepas bertukar kepada keadaan lebar penuh dan menekan bar ruang, kami akan mendapati bahawa jarak antara aksara menjadi besar, dan jurang ini lebih jelas daripada dalam keadaan separuh lebar. Selain itu, paparan huruf Inggeris juga berbeza dalam keadaan lebar penuh. Dalam keadaan separuh lebar, huruf Inggeris yang ditaip adalah bersaiz biasa. Walau bagaimanapun, sebaik sahaja kami bertukar kepada mod lebar penuh, kami akan mendapati bahawa huruf Inggeris yang ditaip menjadi tebal dan dibesarkan. secara keseluruhannya

Dalam era Internet moden, kita sering memasukkan dan mengedit teks pada komputer. Dalam proses ini, kadangkala kita menghadapi masalah menukar antara lebar penuh dan separuh lebar. Lebar penuh dan separuh lebar merujuk kepada saiz kedudukan yang diduduki oleh aksara lebar penuh menduduki satu lebar aksara, manakala aksara separuh lebar menduduki separuh lebar aksara. Penggunaan lebar penuh dan separuh lebar yang betul adalah sangat penting untuk memastikan pemformatan dan keseragaman teks. Oleh itu, adalah perlu untuk menguasai kemahiran menukar lebar penuh dan separuh lebar. Pertama, marilah kita memahami konsep lebar penuh dan separuh lebar. Aksara lebar penuh biasanya merujuk kepada

Ruang lebar penuh dan ruang separuh lebar ialah dua aksara ruang biasa dalam bahasa Cina dan Jepun. Ia mempunyai ciri fungsi yang berbeza dalam penyuntingan huruf, penyuntingan teks dan kaedah input. Artikel ini akan menerangkan secara terperinci ciri dan senario aplikasi ruang lebar penuh dan ruang separuh lebar, membantu pembaca lebih memahami dan menggunakan kedua-dua aksara ruang ini. Mula-mula, mari kita fahami ciri-ciri ruang lebar penuh. Pengekodan ruang lebar penuh dalam Unicode ialah U+3000 Lebarnya adalah sama dengan aksara Cina biasa Ia biasanya digunakan untuk ruang kosong dalam tetapan huruf Cina. Senario penggunaan untuk ruang lebar penuh termasuk tetapi

Apabila pengguna biasanya menggunakan kaedah input untuk memasukkan teks, mereka mungkin melihat perbezaan antara huruf atau simbol Ini disebabkan terutamanya oleh penukaran yang berbeza antara aksara separuh lebar dan lebar penuh. Di sini, kami akan memperkenalkan anda secara terperinci cara merealisasikan penukaran antara lebar penuh dan separuh lebar dengan cepat. Penyelesaian kekunci pintasan untuk menukar antara lebar penuh dan separuh lebar dalam tingkap: Alt+Shift Ini ialah kekunci yang paling biasa digunakan untuk bertukar antara mod input lebar penuh dan separuh lebar. Dalam persekitaran input Cina, menekan kekunci ini akan bertukar kepada mod Bahasa Inggeris, jika tidak, ia akan bertukar kepada mod Cina. Jika terdapat berbilang kaedah input yang dipasang pada komputer anda, anda juga boleh menggunakan kekunci ini untuk menukar antara kaedah input dengan mudah. Penyelesaian 2: Ctrl+Shift juga merupakan antara kekunci pintasan untuk menukar antara lebar penuh dan separuh lebar. Gabungan kekunci ini ditekan dalam mod input Bahasa Inggeris

Tajuk: Cara mudah menukar antara mod lebar penuh dan separuh lebar dalam kaedah input Apabila menggunakan komputer setiap hari, kita selalunya perlu menukar antara lebar penuh dan separuh lebar untuk menyesuaikan diri dengan senario dan keperluan input yang berbeza. Mod lebar penuh biasanya digunakan untuk memasukkan aksara Cina, aksara Inggeris, tanda baca, nombor, dsb., manakala mod separuh lebar lebih sesuai untuk memasukkan bahasa Inggeris dan nombor. Walau bagaimanapun, ramai orang mungkin keliru apabila menggunakan kaedah input dan tidak tahu cara menukar antara lebar penuh dan separuh lebar dengan mudah. Artikel ini akan memperkenalkan beberapa kaedah mudah untuk membantu anda menukar antara kaedah input lebar penuh dan separuh lebar dengan mudah.
