用MySQL函數(shù)清除字符串首尾空白字符的方法
更新時(shí)間:2011年03月31日 00:45:14 作者:
由于內(nèi)容插入的時(shí)候沒(méi)辦法進(jìn)行完全的過(guò)濾,所以審核這里就經(jīng)常出問(wèn)題,搞的頭大,而MySQL的trim函數(shù)沒(méi)辦法去掉回車(chē)和換行,只能去掉多余的空格
問(wèn)題:短信息審核的時(shí)候,會(huì)根據(jù)內(nèi)容來(lái)進(jìn)行判斷,比如a內(nèi)容可以通過(guò),b內(nèi)容不能通過(guò),則MySQL中表現(xiàn)為 msg = a,msg = b,可是如果msg字段的內(nèi)容中包含回車(chē)換行等空白字符(最常見(jiàn)的是內(nèi)容開(kāi)頭和末尾出現(xiàn)換行),則比對(duì)就不成功,造成短信息審核不成功。
由于內(nèi)容插入的時(shí)候沒(méi)辦法進(jìn)行完全的過(guò)濾,所以審核這里就經(jīng)常出問(wèn)題,搞的頭大,而MySQL的trim函數(shù)沒(méi)辦法去掉回車(chē)和換行,只能去掉多余的空格,今天研究了一下MySQL的函數(shù),replace函數(shù),終于解決掉了這個(gè)問(wèn)題,具體解決辦法如下:
假設(shè)想要審核數(shù)據(jù)庫(kù)中內(nèi)容為“我愛(ài)你
”的短信息(注意內(nèi)容后有換行)通過(guò)(status改變成1)
之前的SQL語(yǔ)句是不起作用的
UPDATE `tran`
SET `status` = '1'
WHERE `msg` = '我愛(ài)你';
修改之后的語(yǔ)句
UPDATE `tran`
SET `status` = '1'
WHERE trim( replace( `msg`, '\r\n', ' ' ) ) = '我愛(ài)你';
把數(shù)據(jù)中的回車(chē)換行等替換成空格之后再trim掉,就達(dá)到目的了,雖然不是特別完美,但是由于沒(méi)辦法在用戶錄入的時(shí)候控制,所以只能出此下策,好在MySQL內(nèi)置函數(shù)的效率還是很有保證的。
更新(15:50):
UPDATE `tran`
SET `status` = '1'
WHERE trim( trim(
BOTH '\r\n'
FROM content ) ) = '我愛(ài)你'
用了兩個(gè)trim,這樣的好處是不會(huì)替換內(nèi)容中間的換行和回車(chē),只會(huì)處理頭尾的空格換行回車(chē),相當(dāng)于php中trim函數(shù)的作用了。
附:replace 用法
1.replace into
replace into table (id,name) values('1','a'),('2','b');
此語(yǔ)句的作用是向表table中插入兩條記錄。
2.replace(object, search,replace)
把object中出現(xiàn)search的全部替換為replace
select replace('www.qq.com', 'q', 'Y');
上例輸出結(jié)果 www.YY.com
注:trim和replace函數(shù)詳細(xì)的用法請(qǐng)查看MySQL手冊(cè)。
作者:躍龍雜記
由于內(nèi)容插入的時(shí)候沒(méi)辦法進(jìn)行完全的過(guò)濾,所以審核這里就經(jīng)常出問(wèn)題,搞的頭大,而MySQL的trim函數(shù)沒(méi)辦法去掉回車(chē)和換行,只能去掉多余的空格,今天研究了一下MySQL的函數(shù),replace函數(shù),終于解決掉了這個(gè)問(wèn)題,具體解決辦法如下:
假設(shè)想要審核數(shù)據(jù)庫(kù)中內(nèi)容為“我愛(ài)你
”的短信息(注意內(nèi)容后有換行)通過(guò)(status改變成1)
之前的SQL語(yǔ)句是不起作用的
復(fù)制代碼 代碼如下:
UPDATE `tran`
SET `status` = '1'
WHERE `msg` = '我愛(ài)你';
修改之后的語(yǔ)句
復(fù)制代碼 代碼如下:
UPDATE `tran`
SET `status` = '1'
WHERE trim( replace( `msg`, '\r\n', ' ' ) ) = '我愛(ài)你';
把數(shù)據(jù)中的回車(chē)換行等替換成空格之后再trim掉,就達(dá)到目的了,雖然不是特別完美,但是由于沒(méi)辦法在用戶錄入的時(shí)候控制,所以只能出此下策,好在MySQL內(nèi)置函數(shù)的效率還是很有保證的。
更新(15:50):
復(fù)制代碼 代碼如下:
UPDATE `tran`
SET `status` = '1'
WHERE trim( trim(
BOTH '\r\n'
FROM content ) ) = '我愛(ài)你'
用了兩個(gè)trim,這樣的好處是不會(huì)替換內(nèi)容中間的換行和回車(chē),只會(huì)處理頭尾的空格換行回車(chē),相當(dāng)于php中trim函數(shù)的作用了。
附:replace 用法
1.replace into
復(fù)制代碼 代碼如下:
replace into table (id,name) values('1','a'),('2','b');
此語(yǔ)句的作用是向表table中插入兩條記錄。
2.replace(object, search,replace)
把object中出現(xiàn)search的全部替換為replace
select replace('www.qq.com', 'q', 'Y');
上例輸出結(jié)果 www.YY.com
注:trim和replace函數(shù)詳細(xì)的用法請(qǐng)查看MySQL手冊(cè)。
作者:躍龍雜記
相關(guān)文章
MySQL如何設(shè)置動(dòng)態(tài)創(chuàng)建時(shí)間(create_time)和修改時(shí)間(update_time)
本文主要介紹了MySQL如何設(shè)置動(dòng)態(tài)創(chuàng)建時(shí)間(create_time)和修改時(shí)間(update_time),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Mysql刪除重復(fù)數(shù)據(jù)保留最小的id 的解決方法
這篇文章主要介紹了Mysql刪除重復(fù)數(shù)據(jù)保留最小的id 的解決方法,需要的朋友可以參考下2017-10-10數(shù)據(jù)庫(kù)sql語(yǔ)句優(yōu)化
今天小編就為大家分享一篇關(guān)于數(shù)據(jù)庫(kù)sql語(yǔ)句優(yōu)化,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01Navicat連接mysql報(bào)錯(cuò)2003(10060)的解決方法
本來(lái)好好的navicat連接數(shù)據(jù)庫(kù),突然間今天就打不開(kāi)數(shù)據(jù)庫(kù)了,下面這篇文章主要給大家介紹了關(guān)于Navicat連接mysql報(bào)錯(cuò)2003(10060)的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04