mysql查詢字段中帶空格的值的sql語句

查找字段有空格的方法咱們能夠使用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 = '李楊技術博客';
select * from table where title like '%李楊技術博客%';

以上兩句sql均沒法查詢出正確的結果,那麼咱們應該怎麼寫呢?

請看下面:

 代碼以下 複製代碼

select * from table where trim(replace(title,' ','')) = trim(replace('李楊技術博客',' ',''));
select * from table where trim(replace(title,' ','')) like trim(replace('%李楊 技術博客%',' ',''));

trim的做用是去掉字符串收尾的空格,replace的做用是去掉字符串內部的空格。

這樣就能夠正確的進行匹配了,若是不但願給mysql太多壓力,條件部分的對空格的處理咱們能夠在程序中實現。

相關文章
相關標籤/搜索