MYSQL SET字段类型怎么查询

昨天自己在写一个dedecms功能时突然用到了解dedecms中flag字段,但里面用的是set类型,开始直接查询where = xx 可查出单字符,但是多个是就不好查了,下面我来总结一下set字段查询方法吧。

set可以包含最多64个成员,其值为一个整数。(set类型基础请查阅 mysql数据类型之set类型 )这个整数的二进制码表示该set的值的哪些成员为真。例如有`status` set

 代码如下复制代码 (‘ForSale’,’AuthSuccess’,’AuditSuccess’,’IntentionReached’,’SaleCanceled’),那么它们的值为:
SET member    Decimal value    Binary value
-----------------------------
ForSale         1       0001
AuthSuccess     2       0010
AuditSuccess    4       0100
IntentionReached  8        1000

如果将9存入Status字段,那么其二进制值为1001,也就是说这个值中’ForSale’和’IntentionReached’为真。
可以想到,如果这样的话,大家可以用LIKE命令和 FIND_IN_SET() 函数来检索SET值:

 代码如下复制代码 SELECT * FROM tbl_name WHERE Status LIKE ‘%value%’;
 
SELECT * FROM tbl_name WHERE FIND_IN_SET(‘value’,Status)>0;

当然,以下SQL语句也是合法的,他们显得更加简洁(注意两个成员的顺序及连接符,):

 代码如下复制代码 SELECT * FROM tbl_name WHERE Status = ‘ForSale,IntentionReached’;同时我们还可以直接使用数值来查询:
SELECT * FROM tbl_name WHERE Status = 9

因为SET类型的成员的位置都是固定的,数值9永远表示’ForSale’和’IntentionReached’为真;这样即使以后再添加了一个状态,也不会影响之前的查询逻辑。我们再来看看修改SET类型字段的SQL语句使用技巧:
修改Status让其’ForSale’成员为真

 代码如下复制代码  UPDATE tbl_name SET Status = 1  WHERE Id = 333

修改Status让其’ForSale’、’AuthSuccess’、’IntentionReached’ 成员为真

 代码如下复制代码 UPDATE tbl_name SET Status = 1 | 2 | 4  WHERE Id = 333;

在确认目前状态为7时去掉’ForSale’成员,让7也作为操作的条件是确保目前状态就是为7,如果没有此需求可直接 SET

阿里云-虚拟数字人 阿里云-虚拟数字人

阿里云-虚拟数字人是什么? …

阿里云-虚拟数字人 2 查看详情 阿里云-虚拟数字人  代码如下复制代码 Status = 6 ;
UPDATE tbl_name SET Status = 7 & ~1  WHERE Id = 333;

呵呵,利用SET类型保存权限等数据确实让开发方便清晰了不少哇。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/489502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
济源:夜空被千架无人机点亮
上一篇 2025年11月8日 15:04:55
如何 Java 异常处理的最佳实践?
下一篇 2025年11月8日 15:04:59

相关推荐

  • mysql与sql server的语法有什么区别

    mysql与“sql server”的语法区别:1、mysql支持enum和set类型,而“sql server”不支持;2、mysql的递增语句是“AUTO_INCREMENT”,而“sql server”的是identity;3、“sql server”默认到处表创建语句的默认值表示是“((0)…

    2026年8月29日
    100
  • mysql和myisam有什么区别

    mysql和myisam的区别是:mysql是一个关系型数据库管理系统,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据,而myisam是mysql的默认数据库引擎(5.5版之前),并且不支持事务处理。 本教程操作环境:windows10系统、mysql8.0.22…

    2026年8月29日
    300
  • 归纳整理之MySQL基于GTID主从搭建

    本篇文章给大家带来了关于mysql的相关知识,主要介绍了MySQL基于GTID主从搭建,文章首先通过xtarbackup来同步数据展开文章内容详情,感兴趣的小伙伴可以参考一下。 推荐学习:mysql视频教程 用xtarbackup来同步数据,然后基于GTID来设置主从。 一、用xtarbackup备…

    2026年8月29日
    200
  • mysql存储引擎之间的区别是什么

    mysql存储引擎之间的区别:1、MyISAM不支持事务,不支持行级锁,而InnoDB则支持事务和行级锁;2、InnoDB支持MVCC,支持外键,而MyISAM不支持MVCC和外键。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql存储引擎之间的区…

    2026年8月29日
    000
  • Mysql中如何查看执行计划

    Mysql中如何查看执行计划Mysql中如何查看执行计划Mysql中如何查看执行计划Mysql中如何查看执行计划

    本篇文章给大家带来了关于mysql的相关知识,主要介绍了Mysql中如何查看执行计划,使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈,希望对大家有帮助。 推荐学习:mysql视频教程 使用explain关键…

    2026年8月29日 用户投稿
    000
  • mysql怎么解决错误2013

    解决方法:1、在命令行输入mysql进入交互模式,利用“SET GLOBAL connect_timeout = 60;”命令去修改全局的超时时间即可;2、在开始菜单处搜索服务并进入系统的服务列表,在服务列表之中找到mysql右键选择启动,重新连接即可。 本教程操作环境:windows10系统、my…

    2026年8月29日
    100
  • mysql的10061错误是什么

    在mysql中,10061错误指的是连接本地服务失败;该错误出现的原因是在连接时因为配置文件或者是localhost只想的不是本地ip,才会导致连接本地服务失败的情况,可以将“localhost”的值修改为指定值来解决该错误。 本教程操作环境:windows10系统、mysql8.0.22版本、De…

    2026年8月29日
    000
  • 一起来聊聊MySQL索引结构

    一起来聊聊MySQL索引结构一起来聊聊MySQL索引结构一起来聊聊MySQL索引结构一起来聊聊MySQL索引结构

    本篇文章给大家带来了关于mysql的相关知识,MySQL官方对索引的定义为索引(Index)是帮助MySQL高效获取数据的数据结构,可以得到索引的本质,索引是数据结构,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 简介 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,…

    2026年8月29日 用户投稿
    100
  • MySQL深入浅出精讲触发器用法

    MySQL深入浅出精讲触发器用法MySQL深入浅出精讲触发器用法MySQL深入浅出精讲触发器用法MySQL深入浅出精讲触发器用法

    本篇文章给大家带来了关于mysql的相关知识,触发器是SQLserver提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,事件是在 MySQL 5.1后引入的,有点类似操作系统的计划任务,但是周期性任务是内置在MySQL服务端执行的,下面一起来看一下,希望对大家有…

    2026年8月29日 用户投稿
    200
  • 总结分享MySQL中的用户创建与权限管理

    本篇文章给大家带来了关于mysql的相关知识,主要介绍了MySQL中的用户创建与权限管理,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下。 推荐学习:mysql视频教程 一、用户管理 在mysql库里有个user表可以查看已经创建的用户 1.创建MySQL用户 注意…

    2026年8月29日
    200
  • 一文聊聊Mysql锁的内部实现机制

    本篇文章带大家聊聊mysql锁的内部实现机制,希望对大家有所帮助。 注:所列举代码皆出自Mysql-5.6       虽然现在关系型数据库越来越相似,但其背后的实现机制可能大相径庭。实际使用方面,因为SQL语法规范的存在使得我们熟悉多种关系型数据库并非难事,但是有多少种数据库可能就有多少种锁的实现…

    2026年8月29日
    100
  • MySQL慢查询日志实操(图文解析)

    MySQL慢查询日志实操(图文解析)MySQL慢查询日志实操(图文解析)MySQL慢查询日志实操(图文解析)MySQL慢查询日志实操(图文解析)

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql慢查询日志轮转_MySQL慢查询日志实操,MySQL的慢查询日志是MySQL提供的一种日志记录,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 一、概述 MySQL的慢查询日志是MySQL提供的一种日志记录,它…

    2026年8月29日 用户投稿
    100
  • 干涉MySQL优化器使用hash join的方法

    干涉MySQL优化器使用hash join的方法干涉MySQL优化器使用hash join的方法干涉MySQL优化器使用hash join的方法干涉MySQL优化器使用hash join的方法

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了如何干涉MySQL优化器使用hash join,本文给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是My…

    2026年8月29日 用户投稿
    200
  • 【必知必会】强化MySQL应采取的五个重要安全技巧

    长期以来,数据库一直是你的平衡架构的重要组成部分,并且可以说是最重要的部分。如今,压力已经朝向你的大部分一次性和无状态的基础设施,这给你的数据库带来了更大的负担,既要可靠又安全,因为所有其他服务器不可避免地会连同其余数据一起在数据库中存储有状态信息。 你的数据库是每个攻击者想要获取的大奖。随着攻击变…

    2026年8月29日
    100
  • linux怎么登录mysql

    linux是一套免费使用和自由传播的类unix操作系统,是一个基于posix和unix的多用户、多任务、支持多线程和多cpu的操作系统。它能运行主要的unix工具软件、应用程序和网络协议。它支持32位和64位硬件。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 …

    2026年8月29日
    200
  • MySQL怎么优化性能?优化技巧分享

    当谈到数据库性能优化时,最重要的事情就是选择正确的。你应该决定你的应用程序是需要关系型数据库还是非关系型数据库。即使在一种类型中,你也将有多种选择。 与关系数据库一样,你可能会发现 Oracle、MySQL、SQL Server 和 PostgreSQL。 另一方面,非关系型数据库引入了 Mongo…

    2026年8月29日
    100
  • MySQL安全配置误区及防范_MySQL安全加固常见问题分析

    MySQL安全配置误区及防范_MySQL安全加固常见问题分析MySQL安全配置误区及防范_MySQL安全加固常见问题分析MySQL安全配置误区及防范_MySQL安全加固常见问题分析MySQL安全配置误区及防范_MySQL安全加固常见问题分析

    mysql安全配置误区在于依赖默认设置、忽视最小权限原则和网络暴露面管理不足。1.清理默认及不必要的账户,如匿名用户和test数据库;2.实施最小权限原则,为每个应用创建专属用户并仅授予必要权限;3.强化密码策略,使用validate_password插件强制复杂密码;4.收紧网络访问控制,限制bi…

    2026年8月29日 用户投稿
    100
  • mysql中RR与幻读的相关问题

    mysql中RR与幻读的相关问题mysql中RR与幻读的相关问题mysql中RR与幻读的相关问题mysql中RR与幻读的相关问题

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于rr与幻读的相关内容,包括了mvcc原理、rr产生幻读、rr解决幻读等等内容,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 一、前言 本文围绕这三个话题展开学习 RR 如何解决幻读? MVCC 原理 实验:RR 与…

    2026年8月29日 用户投稿
    400
  • 深入探究MySQL中 UPDATE 的使用细节

    深入探究MySQL中 UPDATE 的使用细节深入探究MySQL中 UPDATE 的使用细节深入探究MySQL中 UPDATE 的使用细节深入探究MySQL中 UPDATE 的使用细节

    在mysql中,可以使用 update 语句来修改、更新一个或多个表的数据。 下面本篇文章带大家探究下mysql中 update 的使用细节,希望对大家有所帮助。 需求背景   最近接到一个数据迁移的需求,旧系统的数据迁移到新系统;旧系统不会再新增业务数据,业务操作都在新系统上进行   为了降低迁移…

    2026年8月29日 用户投稿
    000
  • 总结分享之mysql慢查询优化的思路

    总结分享之mysql慢查询优化的思路总结分享之mysql慢查询优化的思路总结分享之mysql慢查询优化的思路总结分享之mysql慢查询优化的思路

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于慢查询优化的相关问题,包括了利用慢查询日志定位慢查询sql、通过explain分析慢查询sql、修改sql尽量让sql走索引,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 1 慢查询优化思路 当发生慢查询的时候,优…

    2026年8月29日 用户投稿
    200

发表回复

登录后才能评论
关注微信