2017-08-22 33 views
1

我只是一個新手,Perl和我試圖使用Perl DBIx ::類ORM。我想轉換一個SQL語句是有時像相應的Perl DBIx ::班SQL似與不似聲明

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

我知道search_where聲明的補充條件,但我不能夠找到像等價,而不是像?

+0

對不起,我不好的信息不完全是DBIx :: –

回答

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 ::類的其他信息。

請注意LIKE確實不是需要正則表達式。

+0

類嗨感謝您的幫助,順便說一句,有沒有變通的正則表達式,因爲在SQL LIKE語句我使用一個字符串的正則表達式 感謝 –

+0

@Always_Beginner你使用哪個數據庫引擎? 'LIKE'實際上不應該支持正則表達式。一些DB有一個REGEXP運算符。 – simbabque