1

我在 mysql 中有一个表,其中名称以自动增量顺序存储,如下所示

     344100.htm
     344101.htm
     ---
     ---
     477201.htm
     477202.htm
     --
     ---
     888999.htm

我想过滤掉所有包含 200.htm 到 999.htm 之间的数据的行,最后三位数字从 200 到 999。

我尝试使用 like 但在那种情况下我不能给 > 我也尝试过但它没有用

 SELECT * FROM  `tablea` WHERE  `name` LIKE  '%200.htm' and like '%999.htm' LIMIT 0 , 30
4

2 回答 2

1

以下查询将为您提供所需的输出:

   select * 
   from 
      tablea 
   where 
      SUBSTRING(name, -7, 3) > 200 
   and 
      SUBSTRING(name, -7, 3) < 999
于 2013-10-17T08:09:02.730 回答
1

我不能支持 user2629562 的答案,所以这是我的版本。

如果数据总是像示例中那样定义,则与 user2629562 类似的其他选项是检查右起第 7 个字符。

SELECT * FROM表aWHERE SUBSTRING(name, -7, 1) IN [2,3,4,5,6,7,8,9];

或者LOCATE('.',name) as dotPosition

SELECT * FROM表aWHERE SUBSTRING(name, (LOCATE('.',name)-3), 1) IN [2,3,4,5,6,7,8,9];

于 2013-10-17T08:26:57.943 回答