如何判断 VARCHAR 变量是不是包含子字符串?

Posted

技术标签:

【中文标题】如何判断 VARCHAR 变量是不是包含子字符串?【英文标题】:How can I tell if a VARCHAR variable contains a substring?如何判断 VARCHAR 变量是否包含子字符串? 【发布时间】:2012-08-29 05:26:44 【问题描述】:

我以为是CONTAINS,但这对我不起作用。

我希望这样做:

IF CONTAINS(@stringVar, 'thisstring')
   ...

我必须运行一个select 或另一个,这取决于该变量是否包含字符串,我不知道如何让它工作。我看到的所有示例都使用包含中的列。

提前致谢。

【问题讨论】:

【参考方案1】:

标准的SQL方式是使用like:

where @stringVar like '%thisstring%'

那是在查询语句中。您也可以在 TSQL 中执行此操作:

if @stringVar like '%thisstring%'

【讨论】:

...这让我很难过。前几天我试过了,它没有用。我必须输入一些错误的东西,因为它确实有效。我将其归结为在为期 3 天的周末之前的周五晚些时候做某事。据我所知,我可能已经把整个语句倒着打了。谢谢! @Yatrix 。 . .如果类似的方法似乎不起作用,您也可以使用 charindex('thisstring', @stringVar)。 @Asad 。 . .当然这会奏效。通配符 % 匹配零个或多个字符。【参考方案2】:

您也可以使用CHARINDEX,而不是LIKE(正如其他评论者所建议的那样):

declare @full varchar(100) = 'abcdefg'
declare @find varchar(100) = 'cde'
if (charindex(@find, @full) > 0)
    print 'exists'

【讨论】:

如果您要查找的是 LIKE 语句使用的通配符之一,那就太完美了【参考方案3】:

CONTAINS 用于全文索引字段 - 如果不是,则使用 LIKE

【讨论】:

【参考方案4】:
    IF CHARINDEX('TextToSearch',@TextWhereISearch, 0) > 0 => TEXT EXISTS

    IF PATINDEX('TextToSearch', @TextWhereISearch) > 0 => TEXT EXISTS

    Additionally we can also use LIKE but I usually don't use LIKE.

【讨论】:

以上是关于如何判断 VARCHAR 变量是不是包含子字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Excel,VBA中,如何判断变量是不是包含特定字符串

BAT批处理,如何判断变量中,是不是包含了指定的字符串?

java如何判断一个字符串中是不是包含标点符号(任意标点符号,非特定)?

C++判断是不是包含子字符串函数

C++判断字符串中是不是含有某个子字符串

如何在shell中判断A字符串中是不是包含B字符串