在检查阿拉伯语或英语值之前,使用替换单词更新表中的行


Update row in table with replace word before check it if Arabic or English value

我有这样的表格:-

ID               Name                 Email                 UserName
1               Johen mak            jojo@yahoo.com
2               على يوسف            jojo@gmail.com
3               gawil gorgy          jojo@homail.com
4               موسي شفيق           gop@yahoo.com

现在我需要从Email插入UserName值,如果Name是阿拉伯语值,但没有@yahoo.com@gmail.com....

但如果有双重UserName.它必须添加_1_2...

所以表格必须像:-

ID               Name                 Email                 UserName
1               Johen mak         jojo@yahoo.com              Johen_mak
2               على يوسف         jojo@gmail.com              jojo
3               gawil gorgy       jojo@homail.com             gawil_gorgy
4               موسى شفيق        jojo@yamail.com             jojo_1

我该怎么做!!

这是这种情况的解决方案,但它不会检查重复的用户名

update 
yourtable 
set username 
= case when NOT name REGEXP '[A-Za-z0-9]' 
then substring_index(email,'@',1) 
else replace(name,' ','_') end ;

现在另一种解决方案是在用户名末尾附加id,以便所有用户名都是唯一的

update 
yourtable 
set username
= case when NOT name REGEXP '[A-Za-z0-9]' 
then concat(substring_index(email,'@',1),'_',id) 
else concat(replace(name,' ','_'),'_',id) end ;

用户替换 :

 update table set username=(select replace(name,' ','_') from table);