从列sql中提取字符串?

时间:2016-06-14 15:39:29

标签: sql-server-express

所以我在我的LOGS表上有一个名为MESSAGE的列,其中每一行都是这样开始的(好吧,至少它们都以百分比字开头):

Percentage|15/25|1%*1569ms#0ms*C:\Snapshot\Snapshot_15.jpg

我需要选择字符串

1569ms

在这种情况下。他们总是介于*和#之间。 我怎么能这样做?

SELECT SUBSTRING(MESSAGE, , ) as Duration FROM LOGS

2 个答案:

答案 0 :(得分:2)

SELECT SUBSTRING(MESSAGE,
            CHARINDEX('*',message)+1,
            CHARINDEX('#',message)-CHARINDEX('*',message)-1) as Duration 
FROM LOGS

答案 1 :(得分:1)

使用下面提到的SQL查询来获取您指定的输出:

SELECT DISTINCT CASE 
        WHEN NAME IS NOT NULL
            AND len(NAME) > 40
            AND (CHARINDEX('#0ms', NAME) - CHARINDEX('|1%*', NAME) - 4) > 0
            THEN SUBSTRING(NAME, CHARINDEX('|1%*', NAME) + 4, (CHARINDEX('#0ms', NAME) - CHARINDEX('|1%*', NAME) - 4))
        ELSE ''
        END
FROM dbo.Table_1

我们在SQL中使用in-build函数来破坏字符串(SUBSTRING())或者用字符串(CHARINDEX)获取任何字符的索引,因此通过使用这两个函数,我们可以很容易地找到确切的语法根据我们的要求。