日期:2014-05-17  浏览次数:20601 次

如何一条sql语句 删除只含数字且数字在一定范围的记录
求救:
我有一表table1,包含百万记录,有一列id,其值如:
0-20020203689
s-20100306abc
cwt3a356789
u-pc20120236
我现在要删除 3~6位只含数字,并且数字在 200101到201009 之间的记录(如上,只删除0-20020203689
,s-20100306abc),我用:
select * from table1 where ISNUMERIC(substring(id,3,6))>0 and cast(substring(id,3,6) as decimal)>20010101 and cast(substring(id,3,6) as decimal)<201009
可以正常查询,但用:
delete table1 where ISNUMERIC(substring(id,3,6))>0 and cast(substring(id,3,6) as decimal)>20010101 and cast(substring(id,3,6) as decimal)<201009
则提示 cwt3a356789 不能转化为 decimal。
 我想用一条语句解决该问题,如何写sql 语句,请高手指教。


------解决方案--------------------
楼主你描述的情况不对吧?!
这条记录:cwt3a356789根本就不会被查询到
你的删除语句怎么可能会报这个错误呢?
------解决方案--------------------
SQL code
delete FROM table1 
where substring(id,3,6) NOT LIKE '%[^0-9]%'
 and substring(id,3,6)>'200101' and (substring(id,3,6) <'201009'

------解决方案--------------------
我的回复呢?