表中字段provinceid的值为:  20,30,40,50 SELECT * 
FROM `table` 
WHERE provinceid REGEXP '60|70|20|30'这样能够匹配,但假如表中provinceid的值为:  2020,30,40,50  或者其他的一些类似数字,
那么也能匹配到,  请前辈指教. 怎样精确匹配,只要其中包含一个,则返回查询到的结果.

解决方案 »

  1.   

    SELECT * 
    FROM `table` 
    WHERE provinceid REGEXP '\d+';
      

  2.   

    上面那个好像有问题。试试这个:
    SELECT * 
    FROM `table` 
    WHERE provinceid REGEXP '[0-9]0';
         
      

  3.   

    SELECT *  
    FROM `table`  
    WHERE provinceid REGEXP '[50|60|20]0';还是把2020给匹配到了。
      

  4.   

    你为何不修改一下存储方式呢?表中字段provinceid的值为: ,20,30,40,50,
    SELECT * 
    FROM `table` 
    WHERE provinceid like ',20,'
      

  5.   

    provinceid REGEXP '60|70|20|30'
    表示 provinceid 只要包含 60、70、20、30 之一就成立了当 provinceid的值为: 2020,30,40,50 时,他包含有 30,当然也成立了不知道你要达到什么目的,可能你需要的是 FIND_IN_SET 函数
      

  6.   

    或者是
    表中字段provinceid的值为: ,20,30,40,50,
    SELECT * 
    FROM `table` 
    WHERE provinceid REGEXP ',20,|,70,|,30,'