考虑数据库中的表类别,列类型为。数据类型是varchar,带有值

         typeis
         ------
         2.5.1
         12
         1.1.1
         11
         letters12
         .........

我想编写一个查询,它只返回带有“.”和0-9之间的数字的记录
例如
         2.5.1
         1.1.1

到目前为止,我已经
       select typeis from category where typeis
       not in
       (select typeis from category where typeis REGEXP  '[^0-9 \.]+')
       and typeis in
       (select typeis from category where typeis REGEXP  '^[0-9]+[\.]')

这似乎有效。问题是它只占用1500条记录的3secs。我想用一个REGEXP来简化和加快它,而不是使用嵌套的select

最佳答案

尝试:^[0-9]+\.[0-9]+(\.[0-9]+)*
这应该匹配以数字开头的内容,包括中间某处的点,以数字结尾的内容,以及任意多的这些模式。

09-20 03:10