日期:2014-05-16  浏览次数:20806 次

求一复杂语句like的
news表如下
ID Title Keywords  
------------------------------------
1 标题一 A B C D E F G  
2 标题二 1 2 A 3 C 1 3
3 标题三 你 我 他 A 以


上面这张表是我的数据表,Keywords字段里的值以空格分隔存储。
我的PHP代码想用一条SQL语句查询,有一个参数值$keywords与keywords字段比较,查出关键字差不多的值。不知道如何写请帮助一下。谢谢。
PHP code

$keywords="地 A 3";
$sql="select * from news where Keywords like '%$keywords%' order by ID desc"


我的$keywords里有 A ,表中数据也有A。可是查询不出来。这个语句怎么写呢。

------解决方案--------------------
http://blog.csdn.net/acmain_chm/article/details/4141864
REGEXP 正则的实现两个字符串组的匹配。
最近MySQL版块中类似问题出现得比较多。总结了一下。 由于某些原因,有时候我们没有按照范式的设计准则而把一些属性放到同一个字符串字段中。比如个人兴趣,有时候我们设计表为create table members (uid int primary key,uname varchar(20),hobby varchar(100));表中内容如下mysql> select * from ...
------解决方案--------------------
Java code
        
String $keywords="地 A 3";
String[] str=$keywords.split("\\s+");
StringBuffer sb = new StringBuffer();
for(String s:str){
    sb.append("like '%"+s+"%' or");
}
sb.setLength(sb.length()-2);//把多余的or和空格截掉。
String $sql="select * from news where Keywords"+sb.toString()+"order by ID desc";