mysql:如何实现模糊查询?高分...求教... `cname` varchar(100) binary NOT NULL default '',你创建时有没有加 binary? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SELECT * FROM 表 WHERE BINARY UCASE(字段) like UCASE('%".$Key."%') to:lehool:我已经将字段加上BINARY:Stitle varchar(100) BINARY null:No依然不行!to:bonniewater(陪你去看海)WHERE BINARY UCASE(字段) like ...出错了:( 使用函数instr()在where字句 SELECT * FROM `表名` WHERE 字段 like '%关键字%'可以查询中文的.楼主试试 自己一直没发现中文问题模糊查询一直ok也许是mysql版本问题吧不清楚 试试ustb(偶然)提供的方法:SELECT * FROM table WHERE locate(field1,'中文') > 0; SELECT * FROM 表名 WHERE 字段名 LIKE '%汉字关键字%';我试过,确实可以的顺便问个简单的问题,我不想指定字段名 而是不管哪个字段包含关键字都可以,要怎么表示呢? SELECT * FROM 表名 WHERE 字段名 LIKE '%汉字关键字%';我试过,确实可以的中文也是可以的。 这样应该可以的,你试试。<?php $keyword;//是关键字 $strlen = strlen($keyword);//获取关键字的长度 $i = 0; $temp = "%"; while($i<=$strlen) { $temp .= substr($keyword,$i,1)."%"; $i+=2;//这里加2是因为汉字占两个字节 //$i++;//如果要查的是英文,$i就加1 } $query = "select * from yourtable where filed like '$temp'"; //以下是其他代码,应该不用我写了吧。 //................................?>//说明: 如果关键字是"编程" 经过while循环后,$temp = "%编%程%" 这不就实现了模糊查询了嘛,而且是真正的模糊查询。 上面的有点小问题<?php $keyword = "关键字";//是关键字 $strlen = strlen($keyword);//获取关键字的长度 $i = 0; $temp = "%"; while($i<=$strlen) { $temp .= substr($keyword,$i,2)."%";//因为是中文,因此这里要取2个字节 $i+=2;//这里加2是因为汉字占两个字节 //$i++;//如果要查的是英文,$i就加1 } //说明:经过while后,$temp = %关%键%字%% $temp1 = substr($temp,0,-1);//去掉最后一个“%” echo $temp1; //$query = "select * from yourtable where filed like '$temp1'"; //以下是其他代码,应该不用我写了吧。 //................................?> $key_word=$_POST['key_word'];WHERE 字段名 LIKE '%$key_word%' 谢谢各位!我将字段属性改成 null,binary.就可以了:) $query="select * from news where BINARY UCASE(Btitle) like UCASE('%".$keyword."%')"; php怎么验证网址是否正确?? PHP 列表问题 关于休假申请的实现! php ceil 问题 建索引的时候索引名没什么用吧? 求一个完整的无限分类的树形类,,, 那位大虾能说说他们有没有什么区别啊? PHP下mysql的text字段更新问题 如果让一个对象,可以通过数组模式 和 对象模式 访问其成员属性; 100分 如何用php给姓名做UTF-8编码 急!关于mysql数据库导库的问题,想把mysql里面的数据导到oracle怎莫做? 谁能告诉我这种效果怎么实现啊?点一下左边的产品图片,右边就会显示一张大的产品图片?我想了好久了,一直都没有实现。
Stitle varchar(100) BINARY null:No
依然不行!to:bonniewater(陪你去看海)
WHERE BINARY UCASE(字段) like ...
出错了:(
在where字句
可以查询中文的.楼主试试
模糊查询一直ok
也许是mysql版本问题吧
不清楚
SELECT * FROM table WHERE locate(field1,'中文') > 0;
我试过,确实可以的顺便问个简单的问题,我不想指定字段名 而是不管哪个字段包含关键字都可以,要怎么表示呢?
我试过,确实可以的中文也是可以的。
<?php
$keyword;//是关键字
$strlen = strlen($keyword);//获取关键字的长度
$i = 0;
$temp = "%";
while($i<=$strlen)
{
$temp .= substr($keyword,$i,1)."%";
$i+=2;//这里加2是因为汉字占两个字节
//$i++;//如果要查的是英文,$i就加1
}
$query = "select * from yourtable where filed like '$temp'";
//以下是其他代码,应该不用我写了吧。
//................................
?>
//说明:
如果关键字是"编程"
经过while循环后,$temp = "%编%程%"
这不就实现了模糊查询了嘛,而且是真正的模糊查询。
<?php
$keyword = "关键字";//是关键字
$strlen = strlen($keyword);//获取关键字的长度
$i = 0;
$temp = "%";
while($i<=$strlen)
{
$temp .= substr($keyword,$i,2)."%";//因为是中文,因此这里要取2个字节
$i+=2;//这里加2是因为汉字占两个字节
//$i++;//如果要查的是英文,$i就加1
}
//说明:经过while后,$temp = %关%键%字%%
$temp1 = substr($temp,0,-1);//去掉最后一个“%”
echo $temp1;
//$query = "select * from yourtable where filed like '$temp1'";
//以下是其他代码,应该不用我写了吧。
//................................
?>
WHERE 字段名 LIKE '%$key_word%'