求一个字符串字段,过滤后只保留数字的选择语句
有一个字段是字符串型的   例如: 
    字段(nums)值: 
  'B20050702 ' 
  'CD20070223 ' 
  '28746594号 ' 
  'P2874632 '   
 当我查找所要的记录时只能是输入数字   如 '20070518 ',没有 'B ', 'C ', 'P ', '号 '这些传过来,   如果用 
    select   *   from   table1   where   nums   like    '%20070518% ' 
 的话,select   *   from   table1   where   nums      like    '%8% ' 
 这样结果都一样,不合要求,而用   ...Replace(Replace(nums, '非数字 ', ' '), '非数字 ', ' ')....= '20070518 '这种方法的效率太低了。 
 求救,有没有更好的方法!
------解决方案--------------------如果只希望查找nums中只包含数字而不包含其它字符的记录,可以这样: 
 declare @t table(id int,nums varchar(20)) 
 insert @t 
 select 1, 'B20050702 '   union all 
 select 2, 'CD20070223 '  union all 
 select 3, '28746594号 '  union all 
 select 4, 'P2874632 '    union all 
 select 5, 'T20070518日 ' union all  
 select 6, '20070518 '     /*这行记录只包含数字*/   
 declare @str varchar(10) 
 set @str =  '20070518 ' 
 select * from @t where patindex( '%[^0-9]% ',nums) = 0 and charindex(@str,nums) >  0   
 /*结果 
 id    nums 
 ----------------- 
 6     20070518 
 */ 
------解决方案--------------------借用楼上的数据   
 如果只是数字的话,用isnumeric判断旧可以了 
 declare @t table(id int,nums varchar(20)) 
 insert @t 
 select 1, 'B20050702 '   union all 
 select 2, 'CD20070223 '  union all 
 select 3, '28746594号 '  union all 
 select 4, 'P2874632 '    union all 
 select 5, 'T20070518日 ' union all  
 select 6, '20070518 '     /*这行记录只包含数字*/   
 select * from @t where isnumeric(nums)=1   
 id          nums                  
 ----------- --------------------  
 6           20070518