我有一个包含以下结构数据的列:
aaa5644988
aaa4898494
aaa5642185
aaa5482312
aaa4648848
我有一个可以是任何东西的范围,例如100-30000或示例。我希望所有的值都以该范围之间的数字结尾。
我试过
like '%[100-30000]'
但这显然不起作用。
我看过很多类似的问题,但没有解决我的问题
编辑我正在使用SQL Server 2008
示例:
Value
aaa45645695
aaa28568720
aaa65818450
8789212
6566700
对于范围600-1200,我想检索第1,2,5行,因为它们以范围结束。
答案 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