gpt4 book ai didi

MySQL检查数字是否在字符串字段中(数字用逗号分隔)

转载 作者:行者123 更新时间:2023-11-29 10:47:58 25 4
gpt4 key购买 nike

在我的表格中,我有如下子类别

id, name, subcat
1, "john", "4,8,34"
2, "jimmy", "8,32,4"
3, "elthon", "42"

如何做类似的事情SELECT * FROM mytable WHERE 8 IN (subcat)?

最佳答案

我首先想提一下...存储逗号分隔的列表是一种 SQL AntiPattern。我推荐 Bill Karwin 的优秀著作《SQL 反模式:避免数据库编程的陷阱》的第 2 章。亚马逊和其他优秀书商有售 [ https://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557]

<小时/>

要回答您提出的问题...对于格式良好的列表,我们可以使用 MySQL FIND_IN_SET 函数。作为演示

    FIND_IN_SET('8','4,8,34') 

评估结果为 TRUE。

引用:FIND_IN_SET http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set

<小时/>

如果我们想避免使用 MySQL 特定的 FIND_IN_SET 函数,我们可以使用 LIKE 比较。但为了使其正常工作,我们需要在子目录列表的开头和结尾添加一个逗号字符,然后搜索逗号分隔的值,例如列表中的 ',8,'。例如

 CONCAT(',',subcat,',') LIKE '%,8,%'  

关于MySQL检查数字是否在字符串字段中(数字用逗号分隔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44232705/

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