sql - 像字符串一样查询Sql
问题描述
我需要 sql 查询 LIKE 的帮助。数据库中列的值如下:
record 1 : "3,13,15,20"
record 2 : "13,23,14,19"
record 3 : "3,14,15,19,20"......
现在我想获得值为 3 的最准确记录这是我的查询:
SELECT * FROM accounts where type like '%3%'
此查询将发现所有值为 '3' 的记录,例如:13,23 ...。它不能解决我的问题。
解决方案
尝试这个:
SELECT *
FROM accounts
WHERE CONCAT(',', type, ',') LIKE '%,3,%';
演示
这个技巧将逗号放在type
CSV 字符串的末尾,因此我们所要做的就是检查,3,
该字符串中的任何位置。
顺便说一句,通常不希望将这样的 CSV 数据存储在 SQL 表中。相反,请考虑规范化您的数据并将这些 CSV 值存储在不同的行中。
推荐阅读
- flutter - 如何为 Android 和 IOS 实现 FIDO2 (WebAuthn)
- javascript - 无法阻止单击将过去的复选框传播到Firefox中的父级
- javascript - 通过 forwardRef 传递道具
- python - 定义的代码在使用 tkinter 按钮调用之前执行
- c - 动态分配数组的结尾
- python - 在 Matplotlib 中更改单个 xtick 标签的参数
- python - Python 线程自调用线程意外行为
- c++ - For循环不读取ifstream
- r - 如何将打印的数据保存到数据框中
- applescript - 如何在苹果脚本(脚本编辑器)中为重复动作添加一个简单的计数器