SQL Trim非数字来自Varchar Sybase

时间:2012-09-13 18:42:15

标签: sql string sybase string-parsing

我有一些varchar数据,其中包含数值,我试图去除数字部分。我这样做是作为存储过程的一部分,同时执行很多其他的东西,所以我希望这可以作为内联查询的一部分。

此列中的我的数据值如下所示(添加单个刻度以显示varchars的结尾):

'1.25', '< 5 min', '2.35 minutes', '50.43 min'

我想从本专栏中获得的是:      1.25,5,2.35,50.43

我的问题似乎是如何确定单个选择中数值的长度,所以我可以在最后删掉字符。除了选择一个值(我的数字并不总是相同的长度),我不知道我能做什么。我之所以只想要数值,是因为我需要将它转换为浮点数作为其目标值。

这是我尝试过的:

 SUBSTRING(my_data, PATINDEX('%[0-9]%', my_data), 4)

1 个答案:

答案 0 :(得分:1)

这有点复杂,但它适用于您的示例。

declare @val varchar(10)
select @val='50.43 min'
select 
  case
     when PATINDEX('%[a-z]%',col) = 0
       then col
     else rtrim(SUBSTRING(col,1,PATINDEX('%[a-z]%',col)-1))
   end        
from
 ( select SUBSTRING(@val,PATINDEX('%[0-9]%',@val),PATINDEX('%[0-9]%',@val)
   +len(@val)+1) as col ) t

Here您可以找到有关字符串函数的文档。