查找字段有空格的方法咱們能夠使用replace替換或使用trim直接查詢刪除,下面我就先來給各位介紹這兩個函數的例子,而後再進行舉例說明。php
(1)mysql replace 函數
語法:replace(object,search,replace)
意思:把object中出現search的所有替換爲replacehtml
代碼以下 | 複製代碼 |
update `news` set `content`=replace(`content`,' ','');//清除news表中content字段中的空格 這樣就能夠直接用like查詢了。mysql |
(2)mysql trim 函數
語法:trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
如下舉例說明:sql
代碼以下 | 複製代碼 |
mysql> SELECT TRIM(' phpernote '); 數據庫 -> 'phpernote' 函數 mysql> SELECT TRIM(LEADING 'x' FROM 'xxxphpernotexxx'); google -> 'phpernotexxx'url mysql> SELECT TRIM(BOTH 'x' FROM 'xxxphpernotexxx'); spa -> 'phpernote' .net mysql> SELECT TRIM(TRAILING 'xyz' FROM 'phpernotexxyz'); -> 'phpernotex' |
當咱們在使用sql查詢的時候,若是數據庫中的這個字段的值含有空格(字符串內部,非首尾),或者咱們查詢的字符串中間有空格,而字段中沒有空格。那麼咱們頗有可能就什麼都查不到。假若有下面的一張表:
表名
id url title content
1 www.111cn.net 李楊 技術博客 PHP技術博客
2 www.anzhuo8.net 個人淶源 論壇 淶源地方論壇
3 www.百度 百度 百度一下
4 哥哥 google 谷歌一下
這張表裏面,第一和第二條記錄的title部分是有空格的,若是咱們並不知道,或者因爲內容的不能,有無空格有很大的不肯定性:
代碼以下 | 複製代碼 |
select * from table where title = '李楊技術博客'; |
以上兩句sql均沒法查詢出正確的結果,那麼咱們應該怎麼寫呢?
請看下面:
代碼以下 | 複製代碼 |
select * from table where trim(replace(title,' ','')) = trim(replace('李楊技術博客',' ','')); |
trim的做用是去掉字符串收尾的空格,replace的做用是去掉字符串內部的空格。
這樣就能夠正確的進行匹配了,若是不但願給mysql太多壓力,條件部分的對空格的處理咱們能夠在程序中實現。