我在mysql中有表,其中名称以自动增量顺序存储,如此
344100.htm
344101.htm
---
---
477201.htm
477202.htm
--
---
888999.htm
我想过滤掉包含200.htm到999.htm之间数据的所有行,最后三位数字从200到999不等。
我试着用但是在那种情况下我不能给>我也试过但它没有用
SELECT * FROM `tablea` WHERE `name` LIKE '%200.htm' and like '%999.htm' LIMIT 0 , 30
答案 0 :(得分:1)
以下查询将为您提供所需的输出:
select *
from
tablea
where
SUBSTRING(name, -7, 3) > 200
and
SUBSTRING(name, -7, 3) < 999
答案 1 :(得分:1)
我无法upvote user2629562答案,所以这是我的版本。
如果数据总是像样本中一样定义,则用户2629562的其他选项是从右侧检查第7个字符。
SELECT * FROM
表A WHERE SUBSTRING(name, -7, 1) IN [2,3,4,5,6,7,8,9];
或LOCATE('.',name) as dotPosition
SELECT * FROM
表A WHERE SUBSTRING(name, (LOCATE('.',name)-3), 1) IN [2,3,4,5,6,7,8,9];