Mysql查询用逗号分隔的字段-字符串函数FIND_IN_SET(),以及此函数与in()函数的区别

查询用逗号分隔的字段,可以用字符串函数FIND_IN_SET();

查询数据库表中某个字段(值分行显示),可以用函数in()。

今天工作中遇到一个问题,就是用FIND_IN_SET()函数解决的。

第一部分:

FIND_IN_SET()函数用法,

查询用逗号分隔的字段,

表A中 go_value字段的值是以逗号分割,

查询 go_value字段中含有3的行:

select * from A where find_in_set(‘3‘, go_value);

第二部分:

in()函数用法

查询数据库表中某个字段(值分行显示),

表B中 prov字段的值是分行显示,

查询 湖北省,天津市的gid数目

select count(distinct(gid)) from B where prov in ("湖北省","天津市");

第三部分:

查询在湖北省,天津市的gid,但这些gid不在A表中的id为1的go_value字段里(这种情况,特别是当A表中id为1的go_value中值非常多,或者需要多个go_value值时,非常适用)

select b.gid from (SELECT gid FROM B where prov IN ("湖北省","天津市") ) b left outer join
    (select go_value as gid FROM A WHERE id=‘1‘) a on FIND_IN_SET(b.gid,a.gid) where a.gid is null;

第四部分:

补充说明:

只显示左连接查询不到的值,即显示A表存在,但B表不存在的值:

select A.no,A.name,B.score from A left join B on A.no=B.no

where b.score is null;

时间: 2024-10-14 09:28:18

Mysql查询用逗号分隔的字段-字符串函数FIND_IN_SET(),以及此函数与in()函数的区别的相关文章

Mysql精确查询以逗号分隔的字段

SELECT COUNT(*) FROM `uplogs` WHERE CONCAT(',',upnumstr,',') like '%,1,%'; SELECT COUNT(*) FROM `uplogs` WHERE FIND_IN_SET('1', upnumstr); 这样的话就不会查到10或者11这样的数据.

mysql将一个以逗号分隔的数字字符串转出数字

基于MYSQLI封装的数据库类THINKPHP命令出现PHPPARSEERROR:请问一下哪里有PHPSOCKET的视频教程谢谢 关于隐藏INDEXPHP出错问题谁看到过这个模板或者是搭建这个的平台提供信息奖励2TP5验证器UNIQUE多个字段如何写 这个代码我始终詷用时不回显文本,请专家帮我解答,被上传的程序我已经上传到了百度THINKPHP微信DEMO实例TP5从MONGODB中获取数据在资源转数组时候报错整型一个路由的问题 mybatis--insert对象返回自增长idTHINKPHP给

MySQL查询指定表的字段名称

1,查询表中所有字段(横排):SELECT GROUP_CONCAT( COLUMN_NAME SEPARATOR "," ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名' 原文地址:https://www.cnblogs.com/unknownCode/p/12058034.html

Mysql字符串函数FIND_IN_SET()的两点用法

概要:该可以查询用逗号分割的字段,以及对结果进行强制排序 首先看一张表: colid vyear area cast ,31,32,21,12 2014 1 15 ,32,33,34,35,21, 2014 2 16 ,33,34,36,39,40 2011 3 17 表中的colid字段的值是以逗号分割, 当我们需要查询这张表中,colid含有32的行, 那么可以用FIND_IN_SET() SQL如下: SELECT * FROM table WHERE FIND_IN_SET('32',

MySQL用户、[表库字段]权限、管理及查询缓存详解

MySQL用户管理: mysql> help contents; You asked for help about help category: "Contents" For more information, type 'help <item>', where <item> is one of the following categories:    Account Management    Administration    Compound Sta

mysql向表中某字段后追加一段字符串:

mysql向表中某字段后追加一段字符串:update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串update table_name set field=CONCAT('str',field) MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果

mysql 查询语句可以使用的函数总结

mysql 查询语句有时候需要用到函数,但是函数比子查询的效率要高,有时候函数还是很方便的,下面简单总结sql函数具体用法. 1,对数字处理函数avg()count()max()min()sum()2,对字符串的处理合并字符串函数:concat(str1,str2,str3-)比较字符串大小函数:strcmp(str1,str2)获取字符串字节数函数:length(str)获取字符串字符数函数:char_length(str)字母大小写转换函数:大写:upper(x),ucase(x):小写lo

MySQL批量替换指定字段字符串

MySQL批量替换是我们经常会用到的功能,有时站内包含敏感词,会给我们带来麻烦,而在信息量较大的情况下,一篇篇查找.修改是不现实的. 用MySQL批量替换,甚是轻松.发布在这里供参考,以备不时之需. MySQL批量替换指定字段字符串语句 UPDATE 数据表名 SET 字段名 = replace(字段名, '要替换的字符串', '替换为') WHERE 设定条件; 比如本站今天发现站内关于linux命令的文章 标题不是太好,以前都是以 linux下mkdir命令使用详解---linux创建目录命

MySQL自学篇(九)——字符串函数(二)

(8)删除指定字符串的函数TRIM(s1 FROM s) TRIM(s1 FROM s2)删除字符串s中两端所有的子字符串s1.s1是可选向,在未指定情况下,删除空格. select trim('xy' from 'xyxboxyokxxyxy'); (9)重复生成字符串的函数REPEAT(s,n) 返回一个有重复的字符串s组成的字符串,字符串s的个数是n.如果n<0,返回空字符串.如果s或n为NULL,则返回NULL select repeat('MySQL',3); (10)空格函数SPAC