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:15
下一篇 2025年11月8日 15:05:41

相关推荐

  • 解决Laravel迁移中MySQL错误1005:外键约束不正确形成

    本文深入探讨了Laravel迁移过程中常见的MySQL错误1005(外键约束不正确形成)及其解决方案。重点分析了两种常见情况:外键引用表名不匹配和自引用外键的正确处理方式,特别是通过分离外键定义到Schema::table来解决创建时序问题,旨在帮助开发者高效调试和避免此类数据库迁移错误。 引言:理…

    2025年12月11日
    000
  • Windows环境下phpMyAdmin的简易部署指南:XAMPP集成方案

    本教程旨在为Windows用户提供phpMyAdmin的安装指南,尤其针对已安装PHP、MySQL和IIS的环境。考虑到本地开发和测试的便捷性,我们强烈推荐使用XAMPP集成开发环境。XAMPP不仅集成了Apache、MySQL、PHP和phpMyAdmin,还能简化配置过程,确保在Windows …

    2025年12月11日
    000
  • 在Windows上高效部署phpMyAdmin:XAMPP集成方案详解

    本文旨在为Windows用户提供一个高效部署phpMyAdmin的教程。针对已安装PHP、MySQL和IIS的环境,或寻求快速搭建测试/预生产环境的用户,我们强烈推荐使用XAMPP集成开发环境。XAMPP集成了Apache、MySQL、PHP和phpMyAdmin,简化了安装配置流程,并确保在Win…

    2025年12月11日
    000
  • 在Windows上安装phpMyAdmin:XAMPP一站式解决方案

    本文旨在为Windows用户提供phpMyAdmin的安装指导,特别推荐使用XAMPP作为集成解决方案。XAMPP集成了Apache、MySQL、PHP和phpMyAdmin,能够简化测试或预生产环境的搭建过程,并确保在Windows 10和Windows 11系统上的良好兼容性与可配置性,是快速部…

    2025年12月11日
    000
  • PHP表单验证:解决isset()误判与empty()的正确应用

    本文深入探讨PHP表单验证中isset()与empty()的区别,指出isset()在判断字段是否“已填写”时的局限性,并提供使用!empty()进行更精确验证的解决方案。同时,文章还涵盖了更完善的表单数据清洗、特定类型验证以及SQL预处理语句参数绑定的最佳实践,旨在帮助开发者构建健壮、安全的Web…

    2025年12月11日
    000
  • PHP表单验证深度解析:正确使用empty()避免“字段未填写”误报

    本教程旨在解决PHP表单提交中常见的“字段已填写但仍提示未填写”的错误。文章将深入探讨isset()与empty()在表单验证中的差异,阐明为何empty()是更适合判断字段内容是否为空的关键函数。通过提供修正后的代码示例和最佳实践,帮助开发者构建更健壮、用户体验更佳的服务器端表单验证逻辑,确保数据…

    2025年12月11日
    000
  • PHP表单验证:理解isset()与empty()的差异及最佳实践

    本教程深入探讨了PHP表单验证中isset()与empty()函数的关键差异,解释了为何仅使用isset()可能导致验证失败,即使表单已填写。文章提供了使用empty()进行有效字段验证的修正方案,并进一步扩展至更全面的表单数据处理与安全实践,包括数据清理、过滤及错误处理,旨在帮助开发者构建健壮可靠…

    2025年12月11日
    000
  • PHP表单验证:理解 isset() 与 empty() 的关键差异与最佳实践

    本教程深入探讨PHP表单验证中 isset() 和 empty() 函数的使用差异与常见误区。通过分析一个表单提交后仍报错的典型场景,文章详细解释了为何仅使用 isset() 不足以进行全面的字段非空验证,并提供了使用 !empty() 组合逻辑运算符进行稳健验证的解决方案。此外,教程还强调了服务器…

    2025年12月11日
    000
  • 解决Laravel迁移中外键约束错误1005的策略

    本文旨在解决Laravel数据库迁移过程中常见的“Error 1005: Foreign key constraint is incorrectly formed”错误。文章将深入剖析该错误产生的原因,特别是针对外键引用不明确和自引用外键创建时机不当的问题,并提供详细的解决方案,包括修正constr…

    2025年12月11日
    000
  • 解决Laravel中外键约束错误1005:表创建失败问题

    本教程旨在解决Laravel数据库迁移中常见的“外键约束格式不正确”(errno: 150)错误,特别是当涉及自引用外键时。文章将详细解释错误原因,并提供通过明确外键引用表和延迟自引用外键创建的有效解决方案,确保数据库结构正确建立。 理解Laravel中的外键约束错误1005 (errno: 150…

    2025年12月11日
    000
  • 基于MySQL查询结果动态改变字体颜色

    本文将介绍一种实用技巧,用于根据从MySQL数据库获取的数据动态改变网页上的字体颜色。摘要:通过结合PHP的动态处理能力和CSS的样式控制,可以实现根据数据库中的状态值,为网页元素赋予不同的颜色,从而直观地展示信息。 在实际的Web开发中,经常需要根据数据的状态来改变其在页面上的显示效果,例如,将“…

    2025年12月11日
    000
  • PHP:根据 MySQL 数据动态改变字体颜色

    本文将介绍如何使用 PHP 和 CSS,根据从 MySQL 数据库检索到的值,动态地改变网页上特定文本的颜色。通过为不同的状态值定义 CSS 类,并使用 PHP 根据数据库值应用相应的类,可以轻松实现此功能。 实现步骤 以下是实现动态字体颜色更改的详细步骤: 定义 CSS 类: 首先,在你的 CSS…

    2025年12月11日
    000
  • 基于MySQL数据动态改变字体颜色

    本文将介绍如何基于从MySQL数据库检索到的值,使用PHP动态地改变网页元素的字体颜色。通过使用CSS类和PHP条件判断,可以根据不同的数据库值,将字体颜色设置为不同的颜色,例如将 “Pending” 状态显示为黄色,”Approved” 状态显示为绿…

    2025年12月11日
    000
  • 基于 MySQL 数据值的 PHP 字体颜色动态调整教程

    本教程旨在指导开发者如何根据从 MySQL 数据库检索到的值,动态地改变 PHP 页面中特定文本的字体颜色。通过使用 CSS 类和 PHP 的条件判断,可以轻松实现根据不同状态值显示不同颜色的效果,例如将 “Pending” 状态显示为黄色,”Approved&#…

    2025年12月11日
    000
  • 根据MySQL值动态改变字体颜色

    本文旨在指导开发者如何根据从MySQL数据库检索到的值,使用PHP动态地改变网页元素的字体颜色。通过结合PHP的逻辑判断和CSS样式,可以实现不同状态对应不同颜色的显示效果,例如将“Pending”状态显示为黄色,“Approved”状态显示为绿色,“Rejected”状态显示为红色。 要实现根据M…

    2025年12月11日
    000
  • Laravel Eloquent 多语言内容回退机制实现指南

    本文详细探讨了如何在 Laravel Eloquent 中实现多语言内容的智能回退机制。当首选语言的内容不存在时,系统能够自动按预设顺序回退到其他可用语言。通过结合 SQL 的 FIELD 函数与 Eloquent 的 orderByRaw 方法,我们能够高效地构建出灵活且可维护的多语言内容优先级获…

    2025年12月11日
    000
  • Laravel Eloquent 高效实现多语言内容优先级回退查询

    本文详细阐述了如何在 Laravel Eloquent 中实现多语言内容或其他具有优先级的数据查询回退机制。通过结合使用 orderByRaw 和 MySQL 的 FIELD() 函数,我们能够以单次数据库查询的效率,优雅地实现当首选语言内容不存在时,自动回退到次选语言,直至找到可用内容或返回空,从…

    2025年12月11日
    000
  • Laravel Eloquent 多语言内容回退机制:优雅实现按优先级获取标题

    探讨在 Laravel Eloquent 中如何为多语言内容实现优雅的回退机制。当首选语言的标题不存在时,文章将指导您如何按预设优先级自动获取其他语言的标题,从而确保内容的可用性,并提升用户体验。 引言:多语言内容管理的挑战 在构建国际化应用时,多语言内容管理是常见的需求。通常,我们会将不同语言的内…

    2025年12月11日
    000
  • Laravel Eloquent多语言内容回退策略:实现按优先级获取数据

    本文详细介绍了如何在Laravel Eloquent中实现多语言内容的优先级回退逻辑。当首选语言的内容(如标题)在数据库中缺失时,系统将自动按照预设的语言顺序查找并返回下一个可用的语言内容,从而确保在多语言应用中始终能够获取到有效的数据,提升用户体验和系统健壮性。 在构建多语言应用程序时,一个常见的…

    2025年12月11日
    000
  • 如何使用PHPMyAdmin管理用户的登录历史记录

    phpmyadmin本身不追踪用户登录历史,但可管理已存储在数据库中的记录。1.首先需确保应用已将登录数据存入数据库表如login_history;2.通过phpmyadmin选择对应数据库和数据表进行浏览、搜索或执行sql查询筛选记录;3.利用编辑或delete语句进行修改或清理数据,但操作前务必…

    2025年12月11日 好文分享
    000

发表回复

登录后才能评论
关注微信