如何在给定的字符串中找到子字符串?

voase2hg  于 2021-07-29  发布在  Java
关注(0)|答案(3)|浏览(487)

我想在字符串中找到一个子字符串
如果我用mm搜索它应该是假的,用mmm搜索它应该是真的。然而,如果我用mm搜索,它会给我真实的答案。请帮助查找子字符串。输入可以是-8102-mmm或-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'
0ve6wy6x

0ve6wy6x1#

您似乎希望“mmm”由引号或字符串的开头/结尾分隔。如果是,那么一种方法是:

IF '-' + @WholeString + '-' LIKE '%-' + @ExpressionToFind + '-%'

另一种方法是 string_split() :

IF EXISTS (SELECT 1 FROM string_split(@WhileString, '-') s WHERE s.value = @ExpressionToFind)
ws51t4hk

ws51t4hk2#

可以向表达式中添加限制字符(-),如下所示:

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'
bybem2ql

bybem2ql3#

两端带有通配符(%)的字符串“mm”是 like 字符串“嗯”。通配符意味着匹配任何字符,零或更多。所以“%m”是 like “m”,是的 like “毫米”。事实上,的确如此 like “(这里什么都没有,甚至什么都没有)m”。
类似地,值“%mm”是 like “嗯”。值“%mm%”也将是 like “嗯”。它是 like “(什么都没有,甚至什么都没有,在这里)嗯(什么都没有,甚至什么都没有,在这里也一样)”。
如果您只想找到那些带有“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'

相关问题