Tags : Core Data

このTagsの登録数:1件 表示 : 1 - 1 / 1

SQL 逆引きパターンマッチ

post : 2006-02-04 13:57 | , ,

データベースの中にパターンマッチ用の文字列を入れておいて、任意の文字列がそのパターンにマッチするかどうかを調べることは可能だろうか。うまい検索語が思い浮かばず、そういうことが記されたwebサイトを見つけることができなかったけれど、実際に試してみた。式の左辺と右辺を入れ替えるという単純な方法だ。

まずはMySQLで試す。以下のようなTABLEを作る。

CREATE TABLE `test` (`name` varchar(32)) TYPE=MyISAM;
INSERT INTO `test` (`name`) VALUES ('%demo%'),('^a'),('abc|cde'),('____');

そしてクエリを投げてみる。

SQL文: SELECT * FROM `test` WHERE 'search_demo_string' LIKE `name`;
結果: %demo%

SQL文: SELECT * FROM `test` WHERE '1234' LIKE `name`;
結果: ____

SQL文: SELECT * FROM `test` WHERE 'abc' REGEXP `name`;
結果: ^a, abc|cde

と、どれも期待通りの結果が返ってきた。

次は(本命の)Core Data。

[obj setValue:@"http://www.apple.com/.*" forKey:@"name"];

とか作って

[NSPredicate predicateWithFormat:@"'http://www.apple.com/itunes/' matches name"];

などとしてNSPredicateを作り、fetchしてみるとちゃんと結果が返ってきた!