2017-08-22 4 views
1

私はPerlの初心者です。私はPerl DBIx :: Class ORMを使用しようとしています。私はいつか対応するPerl DBIx :: SQL LIKEのためのクラスAND NOT STATEMENT

SELECT `COLUMN_1` FROM TABLE 
    WHERE `COLUMN_NAME` LIKE "regex1" 
    AND `COLUMN_NAME` NOT LIKE` "regex2". 

私は条件を追加するsearch_where声明を知っているようであるSQL文を変換したいが、私はLIKEと同等のものを見つけるなどしないようにできないのですか?

+0

申し訳ありませんが、不完全な情報についての私の悪いことには、SQL LIKE文で、私は、文字列の正規表現に おかげ –

答えて

2

search_likeは便利なショートカットです。おそらくそれを使用したくないでしょう。

searchでもこれを達成するにはいくつかの方法があります。 searchResultSetコールをチェーンして、最終的なResultSetを構築することができます。また

$rs->search(
    { 
     column_name => { -like => 'foo' }, 
    } 
)->search(
    { 
     column_name => { -not_like => 'bar' }, 
    } 
); 

in this older mailing list postを示すように、あなたもちょうど、それらを組み合わせることができます。

ANDを使用すると、より冗長になります。

$rs->search(
    { 
     -and => [ 
      { column_name => { -like  => 'foo' } }, 
      { column_name => { -not_like => 'bar' } }, 
     ] 
    } 
); 

これらはすべて同じことをします。


あなたは、ボンネットの下にDBIx ::クラスによって使用され、SQL::Abstractにこの構文についての追加情報を見つけることができます。

LIKEではありません。は正規表現になります。

+0

ですどのデータベースエンジンを使用していますか? 'LIKE'は実際に正規表現をサポートすべきではありません。いくつかのDBには 'REGEXP'演算子があります。 –

+0

@Always_Beginnerを使用していますので、こんにちはおかげで助けを求め、ところでどんな仕事は、正規表現のために周りがありDBIx ::クラス – simbabque