[CodeIgniter2] アクティブレコードでCONCATを使う

公開
更新日

スポンサーリンク

CodeIgniterのアクティブレコードでCONCATを使う方法のメモ。

SQL_CALC_FOUND_ROWSを使った時と同様、第3引数にfalseを指定します。

$this->db->select( 'data' );
$this->db->from( 'table_name' );
$this->db->like( 'CONCAT(columnA, columnB )' ,'検索語', false );
$this->db->get();
//生成されるSQL文 SELECT data FROM table_name WHERE CONCAT('columnA', 'columnB') LIKE '%検索語%';

$this->db->like()でCONCAT込みのSQL文を生成するとき、デフォルトではCONCATごとエスケープされてしまいます。第3引数にfalseを指定するとエスケープ処理が行われません。これでCONCATが使えるようになりました。

CONCATを使う場合、値がnullである場合のありえるカラムを検索対象にする場合はIFNULL関数を使わなければなりませんが、その場合もlike()の第3引数にfalseを指定することで使用可能となります。

$this->db->select( 'data' );
$this->db->from( 'table_name' );
$this->db->like( 'CONCAT(columnA, columnB, IFNULL(columnC, "") )' ,'検索語', false );
$this->db->get();

スポンサーリンク


Comment