用MySQL函數清除字串首尾空白字元的方法

來源:互聯網
上載者:User

問題:簡訊息審核的時候,會根據內容來進行判斷,比如a內容可以通過,b內容不能通過,則MySQL中表現為 msg = a,msg = b,可是如果msg欄位的內容中包含斷行符號換行等空白字元(最常見的是內容開頭和末尾出現換行),則比對就不成功,造成簡訊息審核不成功。

由於內容插入的時候沒辦法進行完全的過濾,所以審核這裡就經常出問題,搞的頭大,而MySQL的trim函數沒辦法去掉斷行符號和換行,只能去掉多餘的空格,今天研究了一下MySQL的函數,replace函數,終於解決掉了這個問題,具體解決辦法如下:

假設想要審核心數據庫中內容為“我愛你
”的簡訊息(注意內容後有換行)通過(status改變成1)

之前的SQL語句是不起作用的 複製代碼 代碼如下:UPDATE `tran`
SET `status` = '1'
WHERE `msg` = '我愛你';

修改之後的語句

複製代碼 代碼如下:UPDATE `tran`
SET `status` = '1'
WHERE trim( replace( `msg`, '\r\n', ' ' ) ) = '我愛你';

把資料中的斷行符號換行等替換成空格之後再trim掉,就達到目的了,雖然不是特別完美,但是由於沒辦法在使用者錄入的時候控制,所以只能出此下策,好在MySQL內建函數的效率還是很有保證的。

更新(15:50): 複製代碼 代碼如下:UPDATE `tran`
SET `status` = '1'
WHERE trim( trim(
BOTH '\r\n'
FROM content ) ) = '我愛你'

用了兩個trim,這樣的好處是不會替換內容中間的換行和斷行符號,只會處理頭尾的空格換行斷行符號,相當於php中trim函數的作用了。

附:replace 用法
1.replace into 複製代碼 代碼如下:replace into table (id,name) values('1','a'),('2','b');

此語句的作用是向表table中插入兩條記錄。

2.replace(object, search,replace)
把object中出現search的全部替換為replace
select replace('www.qq.com', 'q', 'Y');
上例輸出結果 www.YY.com

註:trim和replace函數詳細的用法請查看MySQL手冊。
作者:躍龍雜記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.