所以我在我的LOGS表上有一个名为MESSAGE的列,其中每一行都是这样开始的(好吧,至少它们都以百分比字开头):
Percentage|15/25|1%*1569ms#0ms*C:\Snapshot\Snapshot_15.jpg
我需要选择字符串
1569ms
在这种情况下。他们总是介于*和#之间。 我怎么能这样做?
SELECT SUBSTRING(MESSAGE, , ) as Duration FROM LOGS
答案 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)获取任何字符的索引,因此通过使用这两个函数,我们可以很容易地找到确切的语法根据我们的要求。