从表中选择其中列包含任何一个

时间:2017-01-16 09:43:34

标签: php android mysql

请帮助我成为初学者:

我想从sql列中选择数据,让我们说image_description包含标签形式的数据。例如,列中的一个条目是"莫斯科,灯光,水,俄罗斯,夜晚"。此列中的其他表条目包含类似格式的数据。

我想使用关键字来选择数据并将它们放在一个常量的$ tag中。所以$ tag变量可能包含e' g"莫斯科,灯光,水,俄罗斯,夜晚"从上面。

如何制定我的SELECT语句以获取包含$ tag变量中任何单词的任何行。

2 个答案:

答案 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问题;