社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

mysql中逗号分隔列表中id项的搜索

Snooze • 5 年前 • 1661 次点击  

我想从mysql表中获取条目,该表在逗号分隔的列表中包含给定的id。我想使用正则表达式和类似的选择器。

我现在的方法是这样的

SELECT * FROM table WHERE list LIKE '%,0,%';

问题是这样会忽略列表中的第一个和最后一个元素,如“0,1,2,3”。

我试过用or运算符来测试所有可能的情况。

SELECT * FROM table WHERE list LIKE '(%,0,%)|(^0,%)';

我试过这个方法,有没有^字符,有没有括号,但在所有情况下,这个方法甚至都不匹配中间的字符。事实上,or运算符似乎不适用于最简单的表达式,如

SELECT * FROM table WHERE list LIKE '%(1|2)%';
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46474
 
1661 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Gordon Linoff
Reply   •   1 楼
Gordon Linoff    5 年前

你应该修正你的数据模型!不要把东西的清单——特别是数字——存储在一个字符串中。sql有一个很好的存储列表的数据模型:它被称为 桌子 是的。

如果你真的,真的,真的很糟糕地选择了其他人的DTA模型,你可以在里面工作。MySQL有一个方便的功能, find_in_set() ,这就是你想要的:

WHERE find_in_set('0', list) > 0
forpas
Reply   •   2 楼
forpas    5 年前

将逗号连接到列表的开头和结尾:

SELECT * FROM table WHERE concat(',', list, ',') LIKE '%,0,%';