我正在尝试裁剪一列(ActionOutput),使其只显示该列中的两个子字符串。
我只需要显示以WRD或CAS开头的8个字符条目。
该列可以包含任何类型/数量的字符,并且它们不会总是包含具有指定模式的条目。
我的查询如下所示:
SELECT
TSRPT_C009 = ExecutionTime,
LastStatusMessageID,
LastStatusMessageIDName,
TSRPT_C007 = ExitCode,
TSRPT_C008 = ActionOutput,
(PATINDEX('%[cas][wrd]%',ActionOutput)) AS CASID来自v_TaskExecutionStatus tse
我还尝试了这个:
substring(
(substring(ActionOutput,(CHARINDEX('WRD0',ActionOutput)),8)),(CHARINDEX('CAS0',ActionOutput)),8
) AS CASID但它也不适用于第二种模式。
有没有办法在字符串中搜索多个模式(从select返回)并返回它/它们。
如果你有任何问题,请不要提出来。
斯蒂芬
发布于 2015-04-27 22:30:35
PATINDEX()返回整数,而不是字符串。你可以试试这个:
(case when ActionOutput like '%cas%'
then substring(ActionOutput, charindex('cas', ActionOutput), 8)
when ActionOutput like '%wrd%'
then substring(ActionOutput, charindex('wrd', ActionOutput), 8)
end) as caswrd_8https://stackoverflow.com/questions/29898476
复制相似问题