gpt4 book ai didi

mysql - 如何在忽略排序的情况下在 MySQL 中查询 SET 列?

转载 作者:行者123 更新时间:2023-11-28 23:11:25 26 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其表中有一个 SET 类型的列,定义如下:

CREATE TABLE t (
col SET('V','A','L','U','E')
)

我想编写一个 SELECT 查询,返回 col 等于 ('A','L','E') 的所有行这可以通过编写以下查询来完成:

SELECT * FROM t WHERE c = 'A,L,E'

我想编写的查询对于非有序输入(如“L”、“A”、“E”)也将返回相同的结果

我找不到一种优雅的方式来做到这一点,也找不到任何可以在官方文档中帮助我的东西

最佳答案

您可以使用以下方法修复 nacho 的建议:

WHERE floor(pow(2,FIND_IN_SET('A',c)-1))+
floor(pow(2,FIND_IN_SET('L',c)-1))+
floor(pow(2,FIND_IN_SET('E',c)-1))=c

这绝不是一个“优雅的解决方案”......如果可能的话,我宁愿使用一个更简单的解决方案。

FIND_IN_SET 提供枚举中的位置,因此我们必须将 2 乘以该数字才能获得 SET 值的内部表示。floor() 函数用于在 find_in_set 返回 0 时保持表达式为 0。

请注意,在检查非法 SET 值时仍然存在误报的风险(例如,查找“A”、“L”、“E”和“X”将返回 true)

关于mysql - 如何在忽略排序的情况下在 MySQL 中查询 SET 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com