请帮助我成为初学者:
我想从sql列中选择数据,让我们说image_description包含标签形式的数据。例如,列中的一个条目是"莫斯科,灯光,水,俄罗斯,夜晚"。此列中的其他表条目包含类似格式的数据。
我想使用关键字来选择数据并将它们放在一个常量的$ tag中。所以$ tag变量可能包含e' g"莫斯科,灯光,水,俄罗斯,夜晚"从上面。
如何制定我的SELECT语句以获取包含$ tag变量中任何单词的任何行。
答案 0 :(得分:1)
如果与整个标记匹配,在单列中使用多个值不是一个好主意。 但如果你使用相同的方法,尝试这样的事情
$string1= yoursting_var.",";
$string2= ", ".yoursting_var.",";
$string3=", ".yourstring_var;
select * from table_name where (column_name like '$string1%' || column_name like '%$string2%' || column_name like '%$string3');..
如果你使用简单的%string%,那么在比较其他单词时会产生问题。比如“水”和“吃”,如果你用“吃”搜索,它将返回两者。
// for mulitple words
$words_arr; // this is your words array contain any nummber of words
$com_string="";
foreach($words_arr as $words){
$string1= $words.",";
$string2= ", ".$words.",";
$string3=", ".$words;
//make query using loop for all words with AND/OR condition
$com_string .= " AND (column_name like '$string1%' || column_name like '%$string2%' ||column_name like '%$string3')";
}
select * from table_name where 1 $com_string;
答案 1 :(得分:0)
这应该可以解决问题:
SELECT * FROM your_table
WHERE image_description LIKE 'your_tag%';
或者如果您想检查多个标签,只需添加OR
条件,如下所示:
SELECT * FROM your_table
WHERE image_description LIKE 'your_tag%'
OR image_description LIKE 'your_second_tag%
OR image_description LIKE 'your_third_tag%;
检查this问题;