mysql中FIND_IN_SET的使用方法】的更多相关文章

在mysql中,有时我们在做数据库查询时,需要得到某字段中包含某个值的记录,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,这时候mysql的FIND_IN_SET函数就派上用场了,下面来具体了解一下. FIND_IN_SET(str,strlist)函数 str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 下面举例说明 test表中有如下字…
mysql 中find_in_set()和in()用法比较 在mysql中in可以包括指定的数字,而find_in_set()用于特定的数据类型. find_in_set 函数使用方法 个例子来说:有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文...1,12,13 等等 .现在有篇文章他既是 头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我们如何用sql查找所有type中有4图文标准的文章呢??这就要我们的 find_in_set 出马…
知识点:mysql中FIND_IN_SET和GROUP_CONCAT()的使用 (一) 场景:当我们使用mysql数据库,查询一张的数据,其中的一列存放的是是另一张表id用“,”拼接的字符串 如下图所示: person表: hobby表: 我们前端页面想展示(把person表hobby一栏存放hobby表id字符串改成name连接的字符串): (二) sql 这时我们可以使用mysql中的两个函数FIND_IN_SET()和GROUP_CONCAT() sql如下: SELECT p.id, p…
来源:http://www.jb51.net/article/125744.htm 测试SQL: CREATE TABLE `test` ( `id` int(8) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `list` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) INSERT INTO `test` VALUES (1, 'name', 'daodao,xiaohu,xiaoqin'…
本篇文章主要介绍mysql中FIND_IN_SET函数用法,用来精确查询字段中以逗号分隔的数据 以及其与 like 和 in 的区别 1.问题发现 之前在做工作任务时有这么一个需求:需要用接口所传的服务商编号和所开通的产品类型查询这张表中是否有此信息来做返回结果. 但公司的产品类型有多个,每个服务商可能开通了多个不同的产品类型,存入产品类型时用的是一个字段,用逗号分隔开存储. 这种场景下就需要精确查找其产品类型,我一开始想的是用 in 和 like 来实现,但实际使用后并不是这种效果...请看下…
首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我们如何用sql查找所有type中有4的图文类型的文章呢?? 这就要我们的 find_in_set 出马的时候到了.以下为引用的内容: ',type) ---------------------------------------------------------- MySQL手册中find_in_…
举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文...1,12,13 等等 . 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1,3,4 的格式存储. 那我们如何用sql查找所有type中有4图文标准的文章呢?? 这就要我们的 find_in_set 出马的时候到了. 以下为引用的内容: select * from article where FIND_IN_SET('4',type) --------------------…
举个例子来说: 有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 .....11,12,13等等 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1,3,4的格式存储. 们我们如何用sql查找所有type中有4图文标准的文章呢?? 这就要我们的find_in_set出马的时候到了. 以下为引用的内容: select * from article where FIND_IN_SET('4',type) ----------------------…
有了FIND_IN_SET这个函数.我们可以设计一个如:一只手机即是智能机,又是Andriod系统的. 比如:有个产品表里有一个type字段,他存储的是产品(手机)类型,有 1.智能机,2.Andriod系统,3.小米系统,4.1000元以下 现在有条手机的记录即是1000元以下的,又是智能机,还是Andriod的系统. type中以 4,1,2的格式存储. 那们我们如何用sql查找所有type中有4的1000元以下的手机呢, 这就要我们的find_in_set出马的时候到了. 先看MySQL手…
举个例子来说: 有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 .....11,12,13等等 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1,3,4的格式存储. 们我们如何用sql查找所有type中有4图文标准的文章呢?? 这就要我们的find_in_set出马的时候到了. 以下为引用的内容: select * from article where FIND_IN_SET('4',type) ----------------------…
如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MySQL数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id 2.从MySQL数据表t1里在数据表t2里没有匹配的记录查找出来并…
需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控制保留多久的binlog 在my.cnf中,加入以下的参数,重启实例 expire_logs_days = 3 #意思是保留3天的binlog;默认值是0,表示不自动删除. 备注:设置完该参数之后,当重启实例,或者刷新日志的时候,就会进行检查,然后删除3天之前的日志 2.测试在刷新日志的时候,触发删…
如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MySQL数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id 2.从MySQL数据表t1里在数据表t2里没有匹配的记录查找出来并…
每天掌握一点,你的知识财富就多一点  今天在维护项目的时候发现了个MYSQL的FIND_IN_SET函数,之前接触太浅,今天又涨点知识了.下面是做个测试 1.创建一张test表,并添加数据 2.编写sql 3.在试下其他sql 根据上面示例总结: 1. FIND_IN_SET(arg1,arg2)中arg1代表我们要查找的字符串,arg2代表中我们要匹配的列名. 2. FIND_IN_SET(arg1,arg2)中arg2中数据必须是要用 , 分割. 3. FIND_IN_SET(arg1,ar…
  count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧. count(*) 它返回检索行的数目, 不论其是否包含 NULL值. SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度. 例如:SELECT COUNT(*) FROM student; COUNT(DISTINCT 字段),返回不同的非NULL值数目:若找不到匹配的项,则COUNT(DISTINCT)返回 0 .…
弄个测试表来说明两者的区别 CREATE TABLE `test` ( `id` int(8) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `list` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) INSERT INTO `test` VALUES (1, 'name', 'daodao,xiaohu,xiaoqin'); INSERT INTO `test` VALUES (2, 'n…
在工作中遇见过,对于新知识,在这里写一写文档. 1.作用 举个例子,也许不理解,在看完后面的SQL示例,再来看就明白了: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 . 现在有篇文章他既是头条,又是热点,还是图文,type将怎么存储这个信息呢? 其实,在type中以 1,3,4 的格式存储,就可以表示这个文章的类型了. 虽然存储了,但是在查询中,怎么办呢? 例如:那我们如何用sql查找所有type中有4的图文类型的文章呢?因为4在type里面的一个…
一  FIND_IN_SET() SELECT * from u_user where FIND_IN_SET('32',tags) 上面的sql是精确查找,查找表中tags中含有32的记录(注意这里的含有不是说13268这样也是含有,而是23,32,35,36这样才是含有),只有当tags这一列中记录是用逗号分开中的tags含有32.不能够说查找("32,33",tags)这种写法是查不到上面的结果,例如 这样的字段:  9791, 2336, 726, 728, 1466, 684…
ava向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源  java向MySQL插入当前时间的四种方式 第一种:将java.util.Date类型的时间转成mysql数据库识别的java.sql.Date类型时间 注:java.util.Date是java.sql.Date的父类 Date time= new java.sql.Date(newjava.util.Date().getTime()); 第二种: java用PreparedStat…
首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我们如何用sql查找所有type中有4的图文类型的文章呢?? 这就要我们的 find_in_set 出马的时候到了.以下为引用的内容: select * from article where FIND_IN_SET('4',type)…
1.# service mysqld stop  #停止mysql数据库服务 2.# service mysqld start --skip-grant-tables #跳过授权表启动mysql数据库服务 3.# mysql -p     #进入mysql数据库添加root用户并授权 mysql> use mysql; mysql> select host,user from user; mysql> update user set password=password("new…
 LOCATE(substr,str), LOCATE(substr,str,pos) 第一个语法返回substr在字符串str 的第一个出现的位置. 第二个语法返回子符串 substr 在字符串str,从pos处开始的第一次出现的位置.如果substr 不在str 中,则返回值为0 . 问题:有多个科目,一个科目下多个多选题,每个题四种答案(ABCD),统计每个科目的每道题选择ABCD的个数 SELECTsum(CASEWHEN (LOCATE('A', 选项名) > 0) THEN 1 EL…
require "database.php"; $po_code = "YMWF2015-6-25-1"; $customer = "youmei"; $confirm_date = "2015-6-25"; $delivery_date = "2015-7-25"; $create_order_sql = "INSERT INTO `ld_crm`.`order` (`id`, `po_code…
Like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法: <1>查询name字段中包含有“明”字的:例 select * from table1 where name like ‘%明%’ (这里不能使用*来代替,一般在使用0个或者任意个字符构成的字符串的时候最好使用%)<2>只在首或尾% 和 * 两者都可以使用: 例 select * from table1 where name like ‘%明’ 或:select * from table…
一.关键字做字段 ,mssql的做法是[关键字],mysql的做法是 `关键字` ;ps:(` 是 tab键上面的一个按键) 二.mssql数据导入到mysql: 1.mssql导出insert语句(数据库 右键选择[任务]下的[声称脚本]—>选择自己需要的类型—>点击[高级]更改[要编写的脚本数据类型]的值); 2.将dbo. 整体替换空,整体替换方括号为空,mysql多条语句插入语句为:insert into table (key1,key2) values (value1,value2)…
SELECT stationid from sys_workstation where FIND_IN_SET(stationid,(SELECT GROUP_CONCAT(opera_area) from rl_user_role where userno = 24)): 注明:1.select opera_area from rl_user_role where userno = 24; 数据库查出来的数据如下图: 2.使用GROUP_CONCAT函数,  SELECT GROUP_CONC…
有种需求,A和B是父子关系,B和C是父子关系,C与D亦是父子关系,以此类推,无限级 现在需要查询到某一级(包括本级)下面所有的,就需要用到FIND_IN_SET函数 select * from table where FIND_IN_SET(cagid,queryChildrenAgidInfo(#{cagid})) 如果不需要本级则 select * from table where FIND_IN_SET(cagid,queryChildrenAgidInfo(#{cagid}))  and…
#简单查询 #查询表中的所有数据SELECT * FROM test; #查询表中的指定列的数据SELECT cid,cname FROM test; #过滤重复的数据SELECT DISTINCT category FROM test; # 给表起别名(只是显示名改变实际名称未改变)SELECT * FROM test AS te;SELECT * FROM test te; #给表中的字段起别名:若有想加入的数据有空格需引号引起来SELECT cname AS 商品名称,cprice AS…
CREATE TABLE `my_seq` (    `seq` int(10) NOT NULL default 10000) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; 要保证下面的两句sql是在同一个conn下执行: update   my_seq   set   seq   =   last_insert_id(seq+1);  select   last_insert_id(); 这样就可以达到跟oracle的sequence一致的效果.即使在update…