我有个这样的数据表, articles下面是文章id号码    (mysql数据库)
要求结果:根据给定的文章id号 查出 id values 比如 articles给出的是 5 那么结果应该是 第一行and第三行   id  values    articles 
  1    aaa      1-2,4-9,37 
  2    bbb        23,80 
  3    ccc        1-24 
 
 

解决方案 »

  1.   

    你的articles 存的值太奇怪了是1,2,4,5,6,7,8,9,37还是
    1-2,4-9,37?如果是第一种可以用like %,param,%
    如果是第二种,我觉得SQL写不了
      

  2.   

    问题不是很清楚。还有你的 articles  的值就是存的1-2 这样的形式?
      

  3.   

    你去mysql区问吧!对mysql正则不熟悉!
    SELECT 'c' REGEXP '^[a-b]';
      

  4.   

    首先,哪位高手设计的这个表???!!!
    其次,正则应该可以:我做了几个测试,应该没问题SELECT *
      FROM articles a
     WHERE articles REGEXP '(^|,)[0-5]-([5-9]|[0-9]{2,})(,|$)'
        OR articles REGEXP '(^|,)5(,|$)'其中(^|,)代表这个片段要么在第一个字符要么以逗号开始,反之(,|$)代表要么在最后,要么以逗号结束
    (^|,)5(,|$) 就是单独的一个5
    (^|,)[0-5]-([5-9]|[0-9]{2,})(,|$)代表x-y
    其中[0-5]代表x=0、1、2...5,且只能是1位数,“-”是连字符,([5-9]|[0-9]{2,})代表y可以是5、6、7、8、9的一位数或者位数在两位以上({2,})的数字。测试数据:
    1, 'aaa', '1-2,4-9,37'
    2, 'bbb', '23,80'
    3, 'ccc', '1-24'
    4, 'ddd', '1,3,5'
    5, 'eee', '5'
    6, 'fff', '1,3,5,7,9'
    7, 'ggg', '15,23'
    8, 'hhh', '15-23'
    9, 'iii', '5-7'
    10, 'jjj', '1-5'
    检索结果
    1, 'aaa', '1-2,4-9,37'
    3, 'ccc', '1-24'
    4, 'ddd', '1,3,5'
    5, 'eee', '5'
    6, 'fff', '1,3,5,7,9'
    9, 'iii', '5-7'
    10, 'jjj', '1-5'
    我想应该这些测试数据覆盖度应该足够了。
    再次希望lz,如果这个是实战项目,还是增加表
      

  5.   


     你以為 sql 語句是神啊, 這樣的問題, 只能用程序去控制了 !!!!!
     - -!!!!!!