請教一句mysql 語句。

snowtscx 2009-06-11 03:51:58
表`data`内有一個列`cate`(text類型),例如:
`data`
`name` `cate`
aaa 1;3;12
bbb 1;5;7;23
ccc 9;11;3;12

現有一個字符串:$chr="2;3;15"; 那麽$chr可以拆分爲:2和3和15。(這一步可以用php做)

現在我要找到數據表`data`内`cate`列要含有2或3或15的所有資料。即aaa 和ccc

請問用mysql語句應該怎樣寫?不要嵌套,mysql4不支持。
...全文
51 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowtscx 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ACMAIN_CHM 的回复:]
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/01/4141864.aspx
REGEXP 正则的实现两个字符串组的匹配。

SQL codeselect*from`data`whereconcat(';',`cate`,';') regexp
concat(';(',replace('2;3;15',';','|'),');');
[/Quote]

呵呵,再問一下,如果是求全部包含 是不是應該改成:
SQL codeselect*from`data`whereconcat(';',`cate`,';') regexp
concat(';(',replace('2;3;15',';','&'),');');
slayer.hover 2009-06-11
  • 打赏
  • 举报
回复
确定麻烦,试下这句吧。



select * from `data` where `cate` regexp '.*(2|3|15).*';

ACMAIN_CHM 2009-06-11
  • 打赏
  • 举报
回复

http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/01/4141864.aspx
REGEXP 正则的实现两个字符串组的匹配。

select * from `data`
where concat(';',`cate`,';') regexp
concat(';(',replace('2;3;15',';','|'),');');
fenglingever 2009-06-11
  • 打赏
  • 举报
回复
text字段 太恐怖了
不过还是可以写的

select * from data where (instr(concat(';','2',';'),concat(';',cate,';')) or instr(concat(';','3',';'),concat(';',cate,';')) or instr(concat(';','15',';'),concat(';',cate,';'))) 就是效率低点 肯定能出结果 呵呵
TR@SOE 2009-06-11
  • 打赏
  • 举报
回复
这个表的设计就很不好。你应该在name-cate之间建立一个1-1关系。

然后象你的检索要求就可以用一个sql语句完成了。

很多SQL问题,实际上都是表结构极不合理造成的。

3NF啊,3NF啊!

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧