SQL Server 根据关键字和结束符提取字符串子串

/*
@info-待截取的字符串
@indexStr-截取子串的起始字符串
@split-截取子串的结束符号
列入依次传入
胸片:正常。心电图:异常,需要注意。血常规检查:正常。
心电图
'。'
返回 心电图:异常,需要注意
*/

CREATE FUNCTION [dbo].[SplitStrForTxt]
(
@info VARCHAR(MAX), 
@indexStr VARCHAR(50),
@split CHAR(2)
)
RETURNS VARCHAR(MAX)
AS
BEGIN

DECLARE @index INT, @leftLength INT, @allLength INT,@strSplit VARCHAR(100),@splitIndex INT
IF @info='' OR  @info IS NULL OR LEN(@info)<LEN(@indexStr)
RETURN '不详'
SET @index=PATINDEX('%'+@indexStr+'%',@info)
SET @leftLength=LEN(LEFT(@info,@index))
SET @allLength=LEN(@Info)
SET @strSplit=SUBSTRING(@Info,@leftLength,@allLength-@leftLength)
SET @splitIndex=CHARINDEX(@split,SUBSTRING(@Info,@leftLength,@allLength-@leftLength))
 IF LEN(SUBSTRING(@strSplit,0,@splitIndex))=''
   RETURN '不详';

RETURN SUBSTRING(@strSplit,0,@splitIndex);

          
END

GO
原文地址:https://www.cnblogs.com/wangboke/p/7389340.html