update go_member set username = replace(name,'非漢字',''); 非漢字改如何寫?

WBOY
發布: 2016-08-04 09:19:45
原創
1311 人瀏覽過

update go_member set username = replace(username,'非漢字','');

我要替換資料庫中名字,只要名字中不是數字字母漢字的(就是去掉特殊字元),都替換掉。該如何做? ? ?

資料庫是MySQL

回覆內容:

update go_member set username = replace(username,'非漢字','');

我要替換資料庫中名字,只要名字中不是數字字母漢字的(就是去掉特殊字元),都替換掉。該如何做? ? ?

資料庫是MySQL

mysql 正規匹配,試試我本地測試是好的
update go_member set username= '' where username not REGEXP '[[:alpha:]]|[0-9]|[a-z,A-Z]'


----謝邀----

思路1(不推薦)

:笨方法,先把所有資料查出來,再對結果進行過濾(過濾非漢字的)資料記錄這些資料的ID,然後update
思路2(推薦)
:使用sql的正規表示式,SQL中也是可以使用正規表示式的。具體還要看你使用什麼資料庫,具體資料庫又有不同的文法。這個具體就看你的情況了,自己Google吧
比如Oracle有這些:regexp_like,regexp_replace,regexp_substr,regexp_instr四個正規表示式函數.例子:select

from emp where regexp_like(ename,'^a[a-z ]

n$');可以找出ename中以a開頭以n結尾的行

根據以上解決方案,你可以自己摸索去google吧。 。 。 。希望對你有幫助。


如果用PHP的話,最好在PHP中用正規來匹配、過濾結果,雖然如樓上所說,MySQL支援正規查詢語句,但是效率會更低。 中文的正規是:/([u4e00-u9fa5])/u,那麼過濾非中文的正則就是:

/([^u4e00-u9fa5])/u

提供個php utf-8下的漢字正規吧

<code><?php
$str = "one中国你好two";
$preg = "/\p{Han}+/u";
$result = preg_replace($preg, '', $str);
var_dump($result);</code>
登入後複製
🎜p小寫是匹配漢字,P大寫是匹配非漢字🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板