我只是Perl的新手,我正在尝试使用Perl DBIx :: Class ORM。我想转换一个有时像
的SQL语句SELECT `COLUMN_1` FROM TABLE
WHERE `COLUMN_NAME` LIKE "regex1"
AND `COLUMN_NAME` NOT LIKE` "regex2".
我知道添加条件的search_where
语句,但我找不到LIKE和NOT LIKE的等价物?
答案 0 :(得分:2)
search_like
只是一个方便的捷径。你可能不想使用它。
但有几种方法可以通过search
实现此目的。请记住,ResultSet与search
的调用可以链接,以构建最终的ResultSet。
$rs->search(
{
column_name => { -like => 'foo' },
}
)->search(
{
column_name => { -not_like => 'bar' },
}
);
或者,您也可以将它们组合起来,如in this older mailing list post所示。
$rs->search(
{
column_name => {
-like => 'foo',
-not_like => 'bar',
}
}
);
或者你可以使用AND
链接它们,这更加详细。
$rs->search(
{
-and => [
{ column_name => { -like => 'foo' } },
{ column_name => { -not_like => 'bar' } },
]
}
);
所有这些都做同样的事情。
您可以在SQL::Abstract中找到有关此语法的其他信息,这些信息由DBIx :: Class使用。
请注意LIKE
不采用正则表达式。