How to get text between two words/characters

前端 未结 4 821
不知归路
不知归路 2021-01-27 01:15

How can I get some text between two known words?

Sub-select example:

(SELECT TOP(1)Note
FROM Clients
WHERE (ID=@ID) AND (Note IS NOT NULL) AND (Note NOT         


        
4条回答
  •  庸人自扰
    2021-01-27 01:33

    CREATE FUNCTION [dbo].[fnSplitString] 
    ( 
        @string NVARCHAR(MAX),
        @id int , ,
        @sword varchar(30) ,
        @delimiter varchar(30) 
    ) 
    RETURNS @output TABLE(splitdata NVARCHAR(MAX) , id int
    ) 
    BEGIN 
        DECLARE @start INT, @end INT 
        declare @start1 varchar(100)
        set @start1 = @sword
    
        declare @end1 varchar(100)
        set @end1 =  @delimiter
        SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) + Len(@delimiter) - 1
        WHILE @start < LEN(@string) + 1 BEGIN 
            IF @end = 0  
                SET @end = LEN(@string) + 1
    
            INSERT INTO @output (splitdata , id)  
            VALUES(substring( LEFT((SUBSTRING(@string, @start, @end - @start)), charindex(@end1, (SUBSTRING(@string, @start, @end - @start)), CHARINDEX(@start1, (SUBSTRING(@string, @start, @end - @start))))-1), CHARINDEX(@start1, (SUBSTRING(@string, @start, @end - @start))) + len(@start1), LEN((SUBSTRING(@string, @start, @end - @start))))  ,@id ) 
    
            SET @start = @end + 1 
            SET @end = CHARINDEX(@delimiter, @string, @start)+ Len(@delimiter) - 1
             END 
        RETURN 
    END
    
    Select note , fnSplitString (note , id ,'startword', 'endword') from clients 
    

提交回复
热议问题