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)
  • しかし、他の文字(文字と数字)はありません

私は通常、次のようなクエリを使用します

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

ただし、メッセージ4も返されます。クエリがメッセージ4を返さないようにするにはどうすればよいですか?

4

1 に答える 1

1

このようにクエリにスペースを追加するだけで簡単です-

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

これはその最初の行をカバーしません

これを使って:

SELECT * FROM table_name WHERE messages LIKE '% $AA%' or messages like '$AA%'
于 2012-04-19T14:04:01.287 に答える