mysql set类型简介及应用场景

概念:
先根据文档讲一下set的基本概念:
SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。所以SET成员值本身不能包含逗号。
例如,指定为SET(‘one’, ‘two’) NOT NULL的列可以有下面的任何值:’one’,’two’,’one,two’或者”.
数据查询:
通常情况,可以使用FIND_IN_SET()函数或LIKE操作符搜索SET值,但是推荐用前者,效率会更好
[sql]
SELECT * FROM tbl_name WHERE FIND_IN_SET(‘value’,set_col)>0;
SELECT * FROM tbl_name WHERE set_col LIKE ‘%value%’;
SELECT * FROM tbl_name WHERE set_col & 1;
SELECT * FROM tbl_name WHERE set_col = ‘val1,val2’;
[/sql]
应用场景:
之前我们在设计一个采编系统的时候,一篇文章需要推荐到不同的地方,如果用一个整数型来存,那同一篇文章就不能同时推荐到不同地方,如果用字符窜存,我们又不想用like。用set类型来存这个就比较合适了,只用一个字段,sql语句很简单,以后如果要添加新的推荐位置,只要增加set值就可以了,做到程序的可扩展性。
类似的应用场景还有权限控制,只用一个字段,一条sql语句就能判断用户是否有权限操作

发布日期:
分类:Mysql

发表评论

邮箱地址不会被公开。 必填项已用*标注