SQL 语句中的infind_in_setlike的区别

Posted 小虎Tiger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 语句中的infind_in_setlike的区别相关的知识,希望对你有一定的参考价值。

1.in查询相当于多个or条件的叠加,例如:

select * from user where user_id in (1,2,3);
等效于
select * from user where user_id = 1 or user_id = 2 or user_id = 3;
not in与in相反,如下
select * from user where user_id not in (1,2,3);
等效于
select * from user where user_id != 1 and user_id != 2 and user_id != 3;

1.find_in_set基本语法

FIND_IN_SET(str,strlist)

str 要查询的字符串,strlist 字段名 参数以”,”分隔 如 (1,2,6,8)
如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

+----+---------+-----------+-------------+
| id | user_id | follow_id | follow_time |
+----+---------+-----------+-------------+
| 13 | 15      | 16,15     |  1478096138 |
| 14 | 15      | 17        |  1478177725 |
| 15 | 15      | 19        |  1478181035 |
+----+---------+-----------+-------------+

比如这张表,SELECT * from test where FIND_IN_SET(‘5‘,follow_id);这样是查不到的,返回值为null,因为follow_id中没有”5”这个值,它不同于 like 模糊查询,它是以“,”来分隔值

like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,
”分















以上是关于SQL 语句中的infind_in_setlike的区别的主要内容,如果未能解决你的问题,请参考以下文章

sql语句,怎么查看一个表中的所有约束

oracle 中的 sql语句查询

用sql语句删除表中的某个ID

sql中的高手中的高手来看看这个SQL查询语句中的union错在哪儿了?

sql语句中的group by啥意思

如何查看数据库表中的sql语句