php开发中实用的两条sql
来源:互联网 发布:固态硬盘无法写入数据 编辑:程序博客网 时间:2024/06/14 23:36
这两天项目开发中,需要实现一些比较实用的功能,用了两个使用的sql,总结一下,怕下次忘记了。
1. 检索数据库中跟提交的内容相匹配的内容
比如:提交的数据是“游泳”,那么数据库中有“我喜欢游泳”字样的就算是匹配,但是这样一来,还是不够,比如我提交的是“周末去游泳”,数据库中有“游泳”的内容,其实意思类似,但是却使用like找不到的,于是想到下面的sql,已经封装成函数了:
function getRelationTags($tagTitle,$cols="*")
{
$titleFeildStrLen = 24; //3*8 四个汉字或者24个字符.
if ("" == $tagTitle) return false;
$sql = "select $cols from ".$TableName." where title != '' and (LOCATE(title,'$tagTitle') or ((issystem = 1 or LENGTH(title) <= $titleFeildStrLen) and title like '%".$tagTitle."%' )) order by LENGTH(title) ";
$data =& $db->getAll($sql);
if(DB::isError($data)){
return $this->returnValue($data->getMessage());
}else{
return $data;
}
}
看sql:
select $cols from ".$TableName." where title != '' and (LOCATE(title,'$tagTitle') or ((issystem = 1 or LENGTH(title) <= $titleFeildStrLen) and title like '%".$tagTitle."%' )) order by LENGTH(title)
其实就是两次匹配,一次是正向匹配,就是把提交的标签跟数据库中标签进行匹配,第二次是把数据库中的标签跟提交的标签进行匹配。
关键在LOCATE()函数,同时也限制了长度,因为mysql中的编码是:
set names 'utf8'
就是是utf8的,那么一个汉字要占用3个字节,字符只占用1个字节,所以上面的:
$titleFeildStrLen = 24;
就是8个汉字和24个字符范围那的标签进行匹配。
2. 同类排序
数据库中比如是这样的内容:
北京 1023 1
天津 2301 1
上海 3450 1
天津 4520 1
北京 3902 1
那么我要提取所有的城市数据,并且把每种城市数据的总数跟别的城市总数进行比较后排序。
函数代码如下:
function getMostCity($num)
{
$sql = "select count(id) as num,city from ".$TableName." where city != '' group by city order by num desc limit 0,$num;";
$data =& $db->getAll($sql);
if($db->isError($data))
return false;
else
return $data;
}
我们关注一下上面的sql语句:
select count(id) as num,city from ".$TableName." where city != '' group by city order by num desc limit 0,$num
核心就是 group by city 把类似城市集中起来后按照多到少排序。
Author: heiyeluren
writeTime: 2005-07-01 14:35
- php开发中实用的两条sql
- php开发中实用的两条sql
- php开发中实用的两条sql
- 两条实用sql语句
- 十条实用的SQL模式规则
- 两条比较实用的mysql导入导出命令
- 两条巧妙的SQL语句
- 面试时常被问到的两条sql
- 两条记录合并一条的 sql
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- C#程序开发中经常遇到的10条实用的代码
- [转] 如何用正确的方法来写出质量好的软件的75条体会
- C++ Gotchas 第6章 内存及资源管理
- [转] 用php实现gb2312和unicode(UTF-8)间的编码转换
- MFC的子类化技术
- C++ Gotchas 条款60:没能区分单体内存分配与数组内存分配
- php开发中实用的两条sql
- VC编程经验汇总(三)
- Eclipse下配置swt开发环境
- [转]PHP 5 数据对象 (PDO) 抽象层与 Oracle
- The Dearbookian #20030407 书评:C++ Gotchas
- VC编程经验汇总(二)
- VC编程经验汇总(一)
- FreeBSD下的vi支持中文显示和编辑
- PHP5中数据库抽象层: PDO