問題:簡訊息審核的時候,會根據內容來進行判斷,比如a內容可以通過,b內容不能通過,則mysql中表現為 msg = a,msg = b,可是如果msg欄位的內容中包含回車換行等空白字元(最常見的是內容開頭和末尾出現換行),則比對就不成功,造成簡訊息審核不成功。
由於內容插入的時候沒辦法進行完全的過濾,所以審核這裡就經常出問題,搞的頭大,而mysql的trim函式沒辦法去掉回車和換行,只能去掉多餘的空格,今天研究了一下mysql的函式,replace函式,終於解決掉了這個問題,具體解決辦法如下:
假設想要審核資料庫中內容為「我愛你
」的簡訊息(注意內容後有換行)通過(status改變成1)
之前的sql語句是不起作用的
複製** **如下:
update `tran`
set `status` = '1'
where www.cppcns.com`msg` = '我愛你';
修改之後的語句
複製** **如下:
update `tran`
set `status` = '1'
where trim( replace( `msg`, '\r\n', ' ' ) ) = '我愛你';
把資料中的回車換行等替換成空格之後再tri程式設計客棧m掉,就達到目的了,雖然不是特別完美,但是由於沒辦法在使用者錄入的時候控制,所以只能出此下策,好在mysql內建函式的效率還是很***的。
更新(15:50):
複製** **如下:
update `tran`
set `status` = '1'
where trim( trim(
both '\r\n' 程式設計客棧
from content ) ) = '我愛你myhiw'
用了兩個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函式詳細的用法請檢視mysqlmyhiw手冊。
作者:躍龍雜記
本文標題: 用mysql函式清除字串首尾空白字元的方法
本文位址:
首尾字串 翻轉字串 5
編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一 問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。思路 中間變數首尾替換法,逐位遍歷,進行交換 詳解1....
C 去除字串首尾字元或字串
在做乙個屬性入庫的功能,將excel屬性資料匯入到圖層要素當中,這裡excel和sde資料庫資料存在乙個關聯字段,通過關聯字段值進行匹配屬性入庫。在實際業務中,由於普查資料往往某些字段值比較複雜,在寫入到圖層中時使用者可能做一些簡化,例如乙個要素編號為0532bh001,可能錄入到圖層中只錄入bh0...
C 去除字串首尾字元或字串
在做乙個屬性入庫的功能,將excel屬性資料匯入到圖層要素當中,這裡excel和sde資料庫資料存在乙個關聯字段,通過關聯字段值進行匹配屬性入庫。在實際業務中,由於普查資料往往某些字段值比較複雜,在寫入到圖層中時使用者可能做一些簡化,例如乙個要素編號為0532bh001,可能錄入到圖層中只錄入bh0...