2个字符串之间的字符串
String between 2 Strings
我目前正在使用下面列出的函数来查找 2 个字符串之间的文本,我的问题是什么都找不到,只是 return 是一个错误,我不会 return space 或 Null,请问有人可以就如何更改它提供任何建议吗?
CREATE FUNCTION [dbo].[udf_GetStringBetween2Strings]
(
@String varchar(max),
@FirstString varchar(256),
@SecondString varchar(256)
)
RETURNS VARCHAR(max)
AS
BEGIN
DECLARE @FirstPosition int, @SecondPosition int
SET @FirstPosition = CHARINDEX(@FirstString,@String) + LEN(@FirstString)
SET @SecondPosition = CHARINDEX(@SecondString,@String)
RETURN (SELECT SUBSTRING(@String, @FirstPosition, @SecondPosition - @FirstPosition))
END
试试这个
CREATE FUNCTION [dbo].[udf_GetStringBetween2Strings]
(
@String varchar(max),
@FirstString varchar(256),
@SecondString varchar(256)
)
RETURNS VARCHAR(max)
AS
BEGIN
DECLARE @FirstSplit VARCHAR(100),@SecondSplit VARCHAR(100),@ReturnStr VARCHAR(100)
SET @FirstSplit = SUBSTRING(@String,0,CHARINDEX(' ',@String))
SET @String = SUBSTRING(@String,CHARINDEX(' ',@String)+1,LEN(@String))
SET @SecondSplit = @String
IF @FirstSplit = @FirstString
SET @ReturnStr = @FirstSplit
ELSE IF @SecondSplit = REPLACE(@SecondString,'?','')
SET @ReturnStr = @SecondSplit
ELSE
SET @ReturnStr = 'Not Found' RETURN @ReturnStr END
最直接的方法是检查 charindex 的结果(returns 没有找到匹配项时为 0)。例如
DECLARE @FirstPosition int, @SecondPosition int
SET @FirstPosition = CHARINDEX(@FirstString,@String)
if @FirstPosition = 0 return 'Not found'
set @FirstPosition += LEN(@FirstString)
SET @SecondPosition = CHARINDEX(@SecondString,@String, @FirstPosition)
if @SecondPosition = 0 return 'Not found'
return SUBSTRING(@String, @FirstPosition, @SecondPosition - @FirstPosition)
我目前正在使用下面列出的函数来查找 2 个字符串之间的文本,我的问题是什么都找不到,只是 return 是一个错误,我不会 return space 或 Null,请问有人可以就如何更改它提供任何建议吗?
CREATE FUNCTION [dbo].[udf_GetStringBetween2Strings]
(
@String varchar(max),
@FirstString varchar(256),
@SecondString varchar(256)
)
RETURNS VARCHAR(max)
AS
BEGIN
DECLARE @FirstPosition int, @SecondPosition int
SET @FirstPosition = CHARINDEX(@FirstString,@String) + LEN(@FirstString)
SET @SecondPosition = CHARINDEX(@SecondString,@String)
RETURN (SELECT SUBSTRING(@String, @FirstPosition, @SecondPosition - @FirstPosition))
END
试试这个
CREATE FUNCTION [dbo].[udf_GetStringBetween2Strings]
(
@String varchar(max),
@FirstString varchar(256),
@SecondString varchar(256)
)
RETURNS VARCHAR(max)
AS
BEGIN
DECLARE @FirstSplit VARCHAR(100),@SecondSplit VARCHAR(100),@ReturnStr VARCHAR(100)
SET @FirstSplit = SUBSTRING(@String,0,CHARINDEX(' ',@String))
SET @String = SUBSTRING(@String,CHARINDEX(' ',@String)+1,LEN(@String))
SET @SecondSplit = @String
IF @FirstSplit = @FirstString
SET @ReturnStr = @FirstSplit
ELSE IF @SecondSplit = REPLACE(@SecondString,'?','')
SET @ReturnStr = @SecondSplit
ELSE
SET @ReturnStr = 'Not Found' RETURN @ReturnStr END
最直接的方法是检查 charindex 的结果(returns 没有找到匹配项时为 0)。例如
DECLARE @FirstPosition int, @SecondPosition int
SET @FirstPosition = CHARINDEX(@FirstString,@String)
if @FirstPosition = 0 return 'Not found'
set @FirstPosition += LEN(@FirstString)
SET @SecondPosition = CHARINDEX(@SecondString,@String, @FirstPosition)
if @SecondPosition = 0 return 'Not found'
return SUBSTRING(@String, @FirstPosition, @SecondPosition - @FirstPosition)