以数字范围结尾的字符串

时间:2014-02-17 08:33:54

标签: sql sql-server-2008

我有一个包含以下结构数据的列:

aaa5644988
aaa4898494
aaa5642185
aaa5482312
aaa4648848

我有一个可以是任何东西的范围,例如100-30000或示例。我希望所有的值都以该范围之间的数字结尾。

我试过

like '%[100-30000]'

但这显然不起作用。

我看过很多类似的问题,但没有解决我的问题

编辑我正在使用SQL Server 2008

示例:

Value
aaa45645695
aaa28568720
aaa65818450
8789212
6566700

对于范围600-1200,我想检索第1,2,5行,因为它们以范围结束。

1 个答案:

答案 0 :(得分:0)

在SQL中,like通常只支持%_这两个运算符。这就是like '%[100-30000]'不起作用的原因。

根据您的使用案例,可能有两种解决此问题的方法:

如果您只需要执行此查询两到三次(不关心需要多长时间),或者数据集不是很大。您可以从该列中选择所有数据,然后使用其他编程语言进行过滤。

以ruby为例,你可以这样做:

column_data = @connection.execute("select * from your_column_name")
result = column_data.map{|x| x.gsub(/^.*[^\d]/, '').to_i }.select{|x| x > 100 && x < 30000}

如果您需要定期执行此查询,我建议您在此数据表中添加一个新列,仅包含当前列中的数字,以便在查询速度方面获得更好的性能。

SELECT * 
FROM   your_table 
WHERE  number_column BETWEEN 100 AND 30000