2012-04-19 40 views
2

考慮以下信息:如何在沒有領先空間的情況下在數據領域進行搜索?

id message 
------------------------------------------------------------ 
1 $AA is the only way to go! 
2 This is my $AA. There are many like it. 
3 But this is my $AA. 
4 My$AA is my swag. 
5 For lack of imagination a message with $AA in the middle. 
6 Another message with at the end: $AA 

我想篩選與$ AA的所有消息:

  • $ AA可能是在消息的開始(這樣:只有加上一個空格)
  • $ AA可能處於消息(這樣:只有前一個空格)結束
  • $ AA可能是其他地方的消息中(用空格包圍)
  • $ AA能公頃在它之前和/或之後的標點符號:$ AA。 $ AA,或($ AA)
  • 但不是任何其他charachters(字母和數字)

我通常會使用一個查詢,如

SELECT * FROM messages WHERE message LIKE '%$AA%' 

但隨後消息4也回。我怎樣才能使查詢不返回消息4?

+1

使用正則表達式。 http://dev.mysql.com/doc/refman/5.1/en/regexp.html – ethrbunny 2012-04-19 13:44:03

+0

@ethrbunny正則表達式是一個不錯的選擇,但是這也可以通過類似的方式實現。看到我的答案 – 2012-04-19 14:11:51

回答

1

它太容易只是在查詢中添加一個空格喜歡這個 -

SELECT * FROM table_name WHERE messages LIKE '% $AA%' 

這將不包括第一行對於

使用本:

SELECT * FROM table_name WHERE messages LIKE '% $AA%' or messages like '$AA%'