查找字段有空格的方法我們可以使用replace替換或使用trim直接查詢刪除,下面我就先來給各位介紹這兩個(gè)函數(shù)的例子,然后再進(jìn)行舉例說明.
1,mysql replace 函數(shù)
語法:replace(object,search,replace)
意思:把object中出現(xiàn)search的全部替換為replace,代碼如下:
update `news` set `content`=replace(`content`,' ','');//清除news表中content字段中的空格 這樣就可以直接用like查詢了。
2,mysql trim 函數(shù)
語法:trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
以下舉例說明,代碼如下:
- mysql> SELECT TRIM(' phpernote ');
- -> 'phpernote'
- mysql> SELECT TRIM(LEADING 'x' FROM 'xxxphpernotexxx');
- -> 'phpernotexxx'
- mysql> SELECT TRIM(BOTH 'x' FROM 'xxxphpernotexxx');
- -> 'phpernote'
- mysql> SELECT TRIM(TRAILING 'xyz' FROM 'phpernotexxyz');
- //開源代碼Vevb.com
- -> 'phpernotex'
當(dāng)我們在使用sql查詢的時(shí)候,如果數(shù)據(jù)庫中的這個(gè)字段的值含有空格,字符串內(nèi)部,非首尾,或者我們查詢的字符串中間有空格,而字段中沒有空格,那么我們很有可能就什么都查不到,假如有下面的一張表.
- 表名
- id url title content
- 1 m.survivalescaperooms.com 李楊 技術(shù)博客 PHP技術(shù)博客
- 2 m.survivalescaperooms.com 我的淶源 論壇 淶源地方論壇
- 3 www.百度 百度 百度一下
- 4 哥哥 google 谷歌一下
這張表里面,第一和第二條記錄的title部分是有空格的,如果我們并不知道,或者由于內(nèi)容的不能,有無空格有很大的不確定性,代碼如下:
select * from table where title = '李楊技術(shù)博客';
select * from table where title like '%李楊技術(shù)博客%';
以上兩句sql均無法查詢出正確的結(jié)果,那么我們應(yīng)該怎么寫呢?請看下面,代碼如下:
select * from table where trim(replace(title,' ','')) = trim(replace('李楊技術(shù)博客',' ',''));
select * from table where trim(replace(title,' ','')) like trim(replace('%李楊 技術(shù)博客%',' ',''));
trim的作用是去掉字符串收尾的空格,replace的作用是去掉字符串內(nèi)部的空格,這樣就可以正確的進(jìn)行匹配了,如果不希望給mysql太多壓力,條件部分的對(duì)空格的處理我們可以在程序中實(shí)現(xiàn).
新聞熱點(diǎn)
疑難解答
圖片精選