спонтанный ответ:
используйте оператор регулярного выражения вместо , как оператор .
РЕДАКТИРОВАТЬ Я только что понял, что регулярное выражение не всегда включено в SQLite. Возможно, вам придется скомпилировать свой собственный ... другими словами, он не существует по умолчанию ..
EDIT2
вот рабочий пример Perl ..
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
use DBI;
# connect to the DB
my $dbh = DBI->connect("dbi:SQLite:dbname=dbfile","","");
# create ugly, pureperl function 'regexp'
# stolen from http://d.hatena.ne.jp/tokuhirom/20090416/1239849298
$dbh->func( "regexp"
, 2
, sub { my ( $pattern, $target ) = @_;
utf8::decode($pattern);
utf8::decode($target);
$target =~ m{$pattern} ? 1 : 0;
}
, "create_function" );
# drop table, if it exists
$dbh->do('drop table if exists foobar');
$dbh->do('create table foobar (foo varchar not null)');
my $sth=$dbh->prepare('insert into foobar (foo) values (?)');
while (<DATA>) { chop;$sth->execute($_); }
#query using regexp
my $a= $dbh->selectall_arrayref( 'select foo '
.'from foobar '
.'where foo regexp "^foo$|^foo\s+.*|.*\W+foo\W+.*|.*\W+foo$"'
);
print join("\n", map {$_->[0];} @{$a})
__DATA__
foo
foo
barfoo
foobarfolo
sdasdssds bar dasdsdsad
dasdsdasdsadsads foo! dasdasdasdsa