如何在没有领先空间的情况下搜索数据域?

时间:2012-04-19 13:41:44

标签: mysql sql

请考虑以下信息:

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)
  • 但不任何其他字符(字母和数字)

我通常会使用诸如

之类的查询
SELECT * FROM messages WHERE message LIKE '%$AA%'

但是也返回了消息4。如何使查询不返回消息4?

1 个答案:

答案 0 :(得分:1)

在您的查询中添加空格太简单了 -

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

这不会涵盖

的第一行

使用它:

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