一个字段匹配的sql语句书写
这几天负责一个家教门户网站的开发,基于cakephp框架。在培训机构表(schools)中存在一个字段subject用来存储另一个数据表
(subjects)中记录的id值,且存储形式为:'1,2,3,4,5'。但是在应用高级搜索过滤时页面select选项option的传值为
subjects的id值,需要判断查询表schools中subject字段存在此id,即查询显示此记录。
先后尝试了以下几种方式:
**在此假设id传值为3**
1. SELECT * from schools WHERE subject like '%3%';会出现查询出存在'1,2,3','1,13,33'的记录,不合逻辑.
2. SELECT * from schools WHERE subject in (3);会出现查询出 '3',而不会查询出存在 '1,3','1,2,3' 的记录,不合逻辑
3. SELECT * FORM schools WHERE find_in_set('3', subject); 可以很好的解决了以上问题。
为了更深入的了解一下find_in_set()函数,mysql手册中对此解释如下:
FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N
之间。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则
FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空字符串,则返回值为 0
。如任意一个参数为NULL,则返回值为 NULL。 这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。
相关文档:
今天从网络上找到了在XP上安装SQL 2000 Server的方法,此前我一直认为这是行不通的,后面google一查,还真是可以,有很多网站都说这个方法可行,我就让lp试试看,结果真行,转载一下吧: 在Windows XP上安装SQL Server 2000的主要流程为:
一、在SQL服务器的安装盘中找到MSDE这个目录,并且点击setup.exe安装它,过程 ......
一、sql书写规范:
1、sql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。
2、连接符or、in、and、以及=、<=、>=等前后加上一个空格。
3、对较为复杂的sql语句加上注释,说明算法、功能。
&nb ......
我们在开发过程中,经常遇到这样问题,就是要求定期进行数据库的检查,如果发现特定数据,那么就要进行某项操作,这个需求呢,可以利用Windows的计划任务,定期执行某一个应用程序,去检索数据;也可以让程序自己控制。其实SQL Server自己也可以创建计划任务,定期进行执行。如果数据库服务器允许,可以考虑采用这种方式。
......
最简单的SQL Server数据库存储过程分页
发布时间:2008.07.02 05:11 来源:赛迪网 作者:Alizze
【赛迪网-IT技术报道】最简单的SQL Server数据库存储过程分页:
1.只需要提供Sql语句和每页的记录数,页数就可以了
2,速度超快哟,100W记录1~3秒就分出来了
......