【MySQL】CSV形式でデータを入れたテキスト型のカラムを検索する

このエントリーをはてなブックマークに追加

2009/09/24 23:59 / Category develop, mysql

こんなデータがあるとする。

+----+----------+
| id | name     |
+----+----------+
|  1 | 1,2,3    |
|  3 | 1,23,3,4 |
|  4 | 1,2,3,5  |
|  5 | 1,2,6,3  |
|  2 | 1,33     |
+----+----------+
like でやると
select * from bm where concat(',', name, ',') like '%,3,%'

→先頭と末尾にカンマ(,)を付ければ、単純なlike検索で書ける。

正規表現でやると
select * from bm where name REGEXP '(^|,)3(,|$)'

→ 「行頭またはカンマがあって、数字がきて、カンマまたは行末がくる」にマッチする行を抽出。

速度は like に対して正規表現が2割ほど遅いぐらい。

この程度の差なら、あとは好みで。

このエントリーをはてなブックマークに追加

no comments

RSS / trackback

コメントください