我需要从表的所有列中找到一个以特定值开头的结果,无论列是什么,并假设我不知道列的名称,如下所示:
$sql = "SELECT * FROM $myTable WHERE AllTheColumns LIKE '{$theValue}%'";
我知道在“WHERE”之后我必须指定列名,但任何其他解决方案都可以(如果存在)。
答案 0 :(得分:3)
您可以先从表格中选择所有列名称:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
//将结果列名存储在$ column_names var;
中然后,使用列名称数组,创建一个循环,将每个列名添加到查询中:
$query = "SELECT * FROM $table_name WHERE ";
foreach($column_names as $i => $colname) {
$query .= "$colname LIKE %$search_string% ";
if ($i+1 < $column_names.length()) {
$query .= " OR ";
}
}
// do stuff with query
答案 1 :(得分:2)
还有其他任何方法可以做到。
SELECT * FROM $myTable
WHERE Column1 LIKE '%$search%'
OR Column2 LIKE '%$search%'
OR Column2 LIKE '%$search%'
OR Column3 LIKE '%$search%'
答案 2 :(得分:1)