从列 sql 中提取字符串?

Extract string from column sql?

所以我的日志中有一个名为 MESSAGE 的列 Table,每一行都这样开头(好吧,至少它们都以 Percentage 这个词开头):

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

我需要 select 字符串

1569ms

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

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

使用下面提到的 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 中有内置函数来断开字符串 (SUBSTRING()) 或获取字符串中任何字符的索引 (CHARINDEX),因此通过使用这两个函数我们可以轻松地根据我们的要求找出确切的语法。