从列 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),因此通过使用这两个函数我们可以轻松地根据我们的要求找出确切的语法。
所以我的日志中有一个名为 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),因此通过使用这两个函数我们可以轻松地根据我们的要求找出确切的语法。