列名を持つテーブルusersテーブルがあり、次のレコードがあるとします。
- チャーリー
- 光沢
- チャール
- イーン
- アーノルド
各項目をループせずに「charlie sheen」に一致するレコードを取得できますか?
より具体的には、特定の文字列の部分文字列であるフィールドを含むレコードを取得する方法はありますか?
列名を持つテーブルusersテーブルがあり、次のレコードがあるとします。
各項目をループせずに「charlie sheen」に一致するレコードを取得できますか?
より具体的には、特定の文字列の部分文字列であるフィールドを含むレコードを取得する方法はありますか?
さて、あなたはあなたが望むことをすることができます:
select * from people
where 'charlie sheen' regexp name;
ただし、これは非効率的であることに注意してください。問題の性質上、すべての行を正規表現として扱い、一致するかどうかを確認する必要があります。
name
列に正規表現内で特別な意味を持つ文字が含まれている可能性がある場合にも問題が発生します。
編集:また、信頼できないユーザーがデータベースに名前を入力することを許可する場合(Webサイトなどから)、それを正規表現として扱うことは潜在的なセキュリティ問題であるということも言及する価値があります。
特定の部分文字列のようなすべてのデータを取得するには、これを使用します。
select * from [table] where [column] like %charlie sheen%