这个问题在这里已经有答案了:
在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
去年关门了。
我身上有什么?
逗号分隔的字符串:$str_states=“1,2”;
我有一张table,上面有:
id event_name states
1 ABC 1,4,5
2 PQR 1,2,3
3 XYZ 3,4,5
我想要的是:
id event_name states
1 ABC 1
2 PQR 1,2
我尝试了一个查询:
SELECT id,event_name FROM events_table WHERE
FIND_IN_SET('1,2', states);
SELECT id,event_name FROM events_table WHERE
states IN ('51,58');
1条答案
按热度按时间ig9co6j11#
你不能真的用
FIND_IN_SET
你想要的方式。FIND_IN_SET
根据csv字符串搜索单个值。所以,你必须使用OR
在这里:如果输入的起点是
1,2
,然后您将不得不在应用程序层中挑出各个值。顺便说一下,在sql表中存储csv非规范化数据是一种不好的做法。你最好修改你的设计,而不是用我的答案。
作为奖励,这里有一个更简洁的方法来使用
REGEXP
:但是,请再次修复您的数据模型。