-1

を持つテーブルusersテーブルがあり、次のレコードがあるとします。

  • チャーリー
  • 光沢
  • チャール
  • イーン
  • アーノルド

各項目をループせずに「charlie sheen」に一致するレコードを取得できますか?

より具体的には、特定の文字列の部分文字列であるフィールドを含むレコードを取得する方法はありますか?

4

2 に答える 2

2

さて、あなたはあなたが望むことをすることができます:

select * from people
    where 'charlie sheen' regexp name;

SQLFiddleの例を参照してください

ただし、これは非効率的であることに注意してください。問題の性質上、すべての行を正規表現として扱い、一致するかどうかを確認する必要があります。

name列に正規表現内で特別な意味を持つ文字が含まれている可能性がある場合にも問題が発生します。

編集:また、信頼できないユーザーがデータベースに名前を入力することを許可する場合(Webサイトなどから)、それを正規表現として扱うことは潜在的なセキュリティ問題であるということも言及する価値があります。

于 2013-01-17T11:37:19.800 に答える
-2

特定の部分文字列のようなすべてのデータを取得するには、これを使用します。

select * from [table] where [column] like %charlie sheen%

于 2013-01-17T11:42:30.283 に答える