如何在给定字符串中查找子字符串?
How to find a substring in given string?
我想在一个字符串中找到一个子串
如果我用 MM 搜索它应该是假的,而用 MMM 搜索它应该是真的。但是,如果我用 MM 进行搜索,它会给出 true。请帮助查找子字符串。输入可能是 ABC-8102-MMM 或 ABC-MMM-0102 或 MMM-TTR-0102
DECLARE @WholeString VARCHAR(50)
DECLARE @ExpressionToFind VARCHAR(50)
SET @WholeString = 'ABC-MMM-0102'
SET @ExpressionToFind = 'MM'
IF @WholeString LIKE '%' + @ExpressionToFind + '%'
begin
PRINT 'Yes it is find'
end
ELSE
PRINT 'It doesn''t find'
两端带有通配符 (%) 的字符串“MM”是 like
字符串“MMM”。通配符表示匹配任何字符,零个或多个。所以“%M”是like
“M”,也是like
“MM”。事实上,它是like
“(这里什么都没有,甚至什么都没有)M”。
同样,“%MM”的值是like
“MMM”。值“%MM%”也将是 like
“MMM”。它是 like
“(这里什么都没有,甚至什么都没有)MM(这里也什么都没有,甚至什么都没有)”。
如果您只想查找那些带有“MMM”的案例,那么您应该搜索:
DECLARE @WholeString VARCHAR(50)
DECLARE @ExpressionToFind VARCHAR(50)
SET @WholeString = 'ABC-MMM-0102'
SET @ExpressionToFind = 'MMM'
IF @WholeString LIKE '%' + @ExpressionToFind + '%'
begin
PRINT 'Yes it is find'
end
ELSE
PRINT 'It doesn''t find'
您可以在表达式中添加限制字符 (-),如下所示:
IF @WholeString LIKE '%-' + @ExpressionToFind + '-%'
OR @WholeString LIKE '%-' + @ExpressionToFind + ''
OR @WholeString LIKE '' + @ExpressionToFind + '-%'
begin
PRINT 'Yes it is find'
end
ELSE
PRINT 'It doesn''t find'
您似乎想要用引号分隔的“MMM”或字符串的 beginning/end。如果是这样,那么一种方法是:
IF '-' + @WholeString + '-' LIKE '%-' + @ExpressionToFind + '-%'
另一种方法使用string_split()
:
IF EXISTS (SELECT 1 FROM string_split(@WhileString, '-') s WHERE s.value = @ExpressionToFind)
我想在一个字符串中找到一个子串
如果我用 MM 搜索它应该是假的,而用 MMM 搜索它应该是真的。但是,如果我用 MM 进行搜索,它会给出 true。请帮助查找子字符串。输入可能是 ABC-8102-MMM 或 ABC-MMM-0102 或 MMM-TTR-0102
DECLARE @WholeString VARCHAR(50)
DECLARE @ExpressionToFind VARCHAR(50)
SET @WholeString = 'ABC-MMM-0102'
SET @ExpressionToFind = 'MM'
IF @WholeString LIKE '%' + @ExpressionToFind + '%'
begin
PRINT 'Yes it is find'
end
ELSE
PRINT 'It doesn''t find'
两端带有通配符 (%) 的字符串“MM”是 like
字符串“MMM”。通配符表示匹配任何字符,零个或多个。所以“%M”是like
“M”,也是like
“MM”。事实上,它是like
“(这里什么都没有,甚至什么都没有)M”。
同样,“%MM”的值是like
“MMM”。值“%MM%”也将是 like
“MMM”。它是 like
“(这里什么都没有,甚至什么都没有)MM(这里也什么都没有,甚至什么都没有)”。
如果您只想查找那些带有“MMM”的案例,那么您应该搜索:
DECLARE @WholeString VARCHAR(50)
DECLARE @ExpressionToFind VARCHAR(50)
SET @WholeString = 'ABC-MMM-0102'
SET @ExpressionToFind = 'MMM'
IF @WholeString LIKE '%' + @ExpressionToFind + '%'
begin
PRINT 'Yes it is find'
end
ELSE
PRINT 'It doesn''t find'
您可以在表达式中添加限制字符 (-),如下所示:
IF @WholeString LIKE '%-' + @ExpressionToFind + '-%'
OR @WholeString LIKE '%-' + @ExpressionToFind + ''
OR @WholeString LIKE '' + @ExpressionToFind + '-%'
begin
PRINT 'Yes it is find'
end
ELSE
PRINT 'It doesn''t find'
您似乎想要用引号分隔的“MMM”或字符串的 beginning/end。如果是这样,那么一种方法是:
IF '-' + @WholeString + '-' LIKE '%-' + @ExpressionToFind + '-%'
另一种方法使用string_split()
:
IF EXISTS (SELECT 1 FROM string_split(@WhileString, '-') s WHERE s.value = @ExpressionToFind)