###複数カラムに対してLIKE演算子の対象にカラム名を使いたい
複数カラムに対してLIKE演算子の対象にカラム名を使いたいです。(↓こんな感じで)
[カラム1, カラム2……] LIKE '%対象カラム%'
調べたところ、CONCATを使う方法を見つけました。
が、データが数百件あるので重くて仕方ないです……。
他に良い方法は無いでしょうか?
MySQLに限らず、ZendPHPを使う方法もあれば教えていただきたいです。
SQLのイメージ
SQL
1CONCAT( IFNULL( column1, ' '), IFNULL( column2, ' ')…… IFNULL( column100, ' ')) LIKE CONCAT('%', target_column, '%')
SQLの組み立ては、PHPから↓のように作りました。
PHP
1$sql = "SELECT `colA`, `colB`"; 2$sql .= " FROM `table_name1`"; 3$sql .= " LEFT JOIN `table_name2` ON"; 4 5// カラムリストの配列(100個くらいある) 6$columnsArray = array('column1', 'column2',……'column100'); 7// カラムリストの作成 8$columnList = ""; 9foreach ($columnsArray as $column) { 10 $columnList .= "IFNULL( ". $column. ", ' '),"; 11} 12$columnList = substr($columnList, 0, -1); // 最後の「,」を削除 13 14$sql .= " CONCAT(".$columnList.") LIKE CONCAT('%', `target_column`, '%')"; 15
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/22 08:35