表`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不支持。

解决方案 »

  1.   

    mysql4 ?! 4.? 具体版本是什么?如果4.0 则麻烦了,4.1或许简单点儿。
      

  2.   

    4.4是否支持正则
    select '2;3;12' REGEXP concat(',',replace('2;3;15',';','|'),',')
      

  3.   

    完整語句怎樣寫?select * ... from ...
      

  4.   

    楼主啊,这个4.4你是从哪弄来的啊?! 还有楼上。MySQL repleased 的版本中只有 4.0.x, 4.1.x 然后就是 5.0.x了执行一下
    mysql> SELECT VERSION();
            -> '4.1.24-standard'如果出错,那就是 4.0 了
      

  5.   

    你可以参考一下以下这篇文章。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/01/4141864.aspx
    REGEXP 正则的实现两个字符串组的匹配。
      

  6.   

    sorry, 是4.0.21REGEXP concat 沒有報錯
      

  7.   

    那改成这个就可以了。select * from `data`
    where concat(';',`cate`,';') regexp
      concat(';(',replace('2;3;15',';','|'),');');
      

  8.   

    其实 从 3.23.4 就开始支持 regexp 了,不过具体的规则上有些不同。
      

  9.   

    可以了,感謝ACMAIN_CHM 和 wwwwb 兩位兄弟!!!