2013-02-11 74 views
2

我有一些行MySQL數據庫如下:MySql查詢挑戰 - 返回結果與空白?

ID DESC 
1 This is my bike 
2 Motorbikes are great 
3 All bikers should wear helmets 
4 A bike is great for exercise 
5 A. Top. Bike. 

我想要做的是周圍的搜索項空白返回行,或術語是在描述的結束或開始。

例如,

"SELECT * FROM `mytable` WHERE `desc` LIKE '%bike%'" 

將返回所有行。但是,

"SELECT * FROM `mytable` WHERE `desc` LIKE '% bike %' 

只會返回一行4

我真正想要的是返回行1,4可靠的方式5,即其中搜索項sorrounded有什麼,但字符AZ,0 -9。有任何想法嗎?這甚至可以用MySql?

謝謝!

+0

你可以使用MySQL正則表達式 – 2013-02-11 12:10:01

+0

正則表達式在Mysql查詢中。請參閱[本](http://dev.mysql.com/doc/refman/5.1/en/regexp.html) – 2013-02-11 12:12:03

+0

答案是...... 選擇*來自評論地點描述REGEXP'[[:<:]]desc[[:>:]]' 快速高效。感謝StackOverflow! – barners 2013-02-11 12:41:45

回答

1

您應該開始閱讀關於MySql RegEx

示例代碼。

SELECT * FROM table WHERE field_name REGEXP PATTERN;

更具體

詳見表

 
ID  NAME 
1  Dipesh 
2  Dip 
3  Dipe 
4  DiDi 
5  Di 
SELECT * FROM details WHERE NAME REGEXP '^Di$';

結果

NAME - >迪

SELECT * FROM details WHERE NAME REGEXP 'Di$';

結果

名 - >滴滴,迪

SELECT * FROM details WHERE NAME REGEXP '^Di';

結果

名 - >浸,迪迪,迪

+0

謝謝 - 正則表達式是要走的路。 – barners 2013-02-11 12:39:53

+0

From here:http://www.tech-recipes.com/rx/484/use-regular-expressions-in-mysql-select-statements/ SELECT * FROM'desc' WHERE description REGEXP'[[::<:]]bike[[:> :]]' 運行良好,並在我的WAMP服務器上以25k +行的結果返回0.0075秒 – barners 2013-02-11 12:40:56

0

你需要在查詢中指定的附加條件:

SELECT * 
FROM `mytable` 
WHERE 
    `desc` LIKE '% bike %' OR 
    `desc` LIKE '% bike' OR 
    `desc` LIKE 'bike %'; 
+1

LIKE區分大小寫:強制大小寫比較以確保第5行也被返回 – 2013-02-11 12:12:17

+0

@MarkBaker有趣。根據[MySQL文檔](http://dev.mysql.com/doc/refman/5.5/en/case-sensitivity.html),'LIKE'不區分大小寫。 – 2013-02-11 12:14:57

+0

取決於整理;但是現在大多數建議都是使用utf-8,這是區分大小寫的 – 2013-02-11 12:20:39

3

您可以在SQL

SELECT * FROM `table` WHERE desc REGEXP '\bbike\b' 
0

使用正則表達式試試這個,希望它會幫助你

"SELECT * FROM `mytable` WHERE `desc` LIKE '% bike' 
+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你可以隨時評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/faq#reputation),你將能夠[評論任何帖子](http://stackoverflow.com/privileges/comment)。 – andr 2013-02-11 12:39:11