从字符串中获取数值

时间:2014-01-09 06:46:52

标签: sql-server-2008

在名为TRY的表格中,我有一列ABC,其中的记录值为abc:30|def:g h i|j:k|l:m|n:o|p: |q: 0.25 |r:0.47|s:t u

我想在r:之后获取数值。给出的示例的值为 r:0.47 但它也可以具有 123456.012596363 的值

我不确定使用patindex。任何人都可以帮忙。

非常感谢

1 个答案:

答案 0 :(得分:0)

试试这个...........

declare @abc nvarchar(100) =  'abc:30|def:g h i|j:k|l:m|n:o|p: |q: 0.25 |r:0.47|s:t u'  

select 
substring(substring(@abc,charindex('r:',@abc) + 2 ,len(@abc)),
            1,
            charindex('|',substring(@abc,charindex('r:',@abc) + 2,len(@abc))) - 1)

对您的表格使用此查询

  select 
    substring(substring(abc,charindex('r:',abc) + 2 ,len(abc)),
                1,
                charindex('|',substring(abc,charindex('r:',abc) + 2,len(abc))) - 1)


    from  TRY

-----最终尝试

  select case when charindex('r:',abc) = 0 then abc else 
    substring(substring(abc,charindex('r:',abc) + 2 ,len(abc)),
                1,
                charindex('|',substring(abc,charindex('r:',abc) + 2,len(abc))) - 1) end


    from  TRY