请教 mysql查询

发布于 2022-09-02 23:54:15 字数 267 浏览 18 评论 0

mysql 表中字段option_tag 存储的值格式(分号)为: 4:539;8:543;4:545;8:549
通过 find_in_set() 可以查找到以逗号分隔的字符串。
以分号分隔的 字符串 有什么函数直接能查询到 option 含有 539的所有值?

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

十秒萌定你 2022-09-09 23:54:15

sql语句:
SELECT * FROM table
WHERE locate(':539;', CONCAT(options_tag, ';')) > 0

用like的方法逻辑上不严谨,如4:2539这种情况也会被like匹配,但不是想要的结果。

从设计方案考虑,如果是复杂的数据类型,建议存成json格式,mysql高版本直接内置了json解析、查询功能。

谁的新欢旧爱 2022-09-09 23:54:15

通过like或者正则即可。
但是不建议将逻辑放在mysql中,造成数据库引擎压力过大,而且极度不安全。
正确的做法应该是把整个字段的值取出来,作为字符串然后用语言比如php python nodejs之类的处理。

千年*琉璃梦 2022-09-09 23:54:15
SELECT * FROM table
WHERE options_tag LIKE '%539%';

正如@小虫哥哥 所说,这是设计缺陷,这看起来是一个一对多或者多对多的关系,不应该用一个字段存起来,不仅查询效率低(在SQL里对字段进行运算有可能会使该字段的索引无法被使用),而且查询起来也不灵活。

時窥 2022-09-09 23:54:15

like 匹配

回首观望 2022-09-09 23:54:15

like :539

请止步禁区 2022-09-09 23:54:15

我说这是设计缺陷有人赞同吗

眉黛浅 2022-09-09 23:54:15

like相似匹配

迷迭香的记忆 2022-09-09 23:54:15

模糊
查询
研究下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文