Tsql T-SQL模式匹配/Regex 0或1次方括号匹配

Tsql T-SQL模式匹配/Regex 0或1次方括号匹配,tsql,escaping,sql-like,brackets,square,Tsql,Escaping,Sql Like,Brackets,Square,我一直在尝试匹配,使用LIKE或PATINDEX来匹配 [subdomain.domain.com].[dbo].[MyDatabase] 在SQL字符串中发生 而字符串[subdomain.domain.com]将始终以这种格式显示 [dbo]和/或[MyDatabase]显示时可以带方括号,也可以不带方括号 我试过以下方法 其中,类似于“%[]]subdomain.domain.com[].[]{0,1}dbo[]{0,1}.[]{0,1}MyDatabase[]{0,1}%' 或 其中SQ

我一直在尝试匹配,使用LIKE或PATINDEX来匹配

[subdomain.domain.com].[dbo].[MyDatabase]

在SQL字符串中发生

而字符串[subdomain.domain.com]将始终以这种格式显示

[dbo]和/或[MyDatabase]显示时可以带方括号,也可以不带方括号

我试过以下方法

其中,类似于“%[]]subdomain.domain.com[].[]{0,1}dbo[]{0,1}.[]{0,1}MyDatabase[]{0,1}%'

其中SQLString类似“%\[subdomain.domain.com\].\[{0,1}dbo\]{0,1}.\[{0,1}MyDatabase\]{0,1}%'转义'\'

我可以创建多个WHERE或WHERE语句,涵盖每个可能性,但我想了解在这种情况下正则表达式不起作用的原因。

like
子句中的一个特殊字符,这意味着“指定范围内的任何单个字符(例如[a-z])

只要文本中有方括号,就可以使用
%
特殊字符。比如:

WHERE SQLString LIKE '%subdomain.domain.com%.%dbo%.%MyDatabase%'

因为这将匹配“任何零个或多个字符的字符串”,如果有方括号,很好,如果没有,它仍然匹配。

您使用的是SQL Server吗?如果是,版本是什么。是什么让你认为它们是等价的?@JakeMc,它是SQL Server 2012 SP4 v 11.07493。4@HABO我不太明白。我知道正则表达式/模式匹配结构可以在LIKE语句中使用。不确定我是否暗示了等价性?像
{0,1}
这样的元素似乎没有为
这样的
文档化。您在
模式等
模式中包含该语法的文档的来源是什么?谢谢您回复Jake,尽管我已经尝试过了。它有点“贪婪”,并且会拾取例如“subdomain.domain.com大量文本AnotherDatabase.dbo.table大量文本MyDatabase.dbo.Mytable”。我希望符合这些特定的模式。似乎{0,1}修饰符可能不适用于tsqlHI Jake,方括号也用于逃避,尽管看起来我过于热心,在我提供的第一个示例中,似乎结束方括号不需要转义。@Matt我相信您需要使用Like子句末尾的关键字将其中一个方括号明确定义为转义字符,才能将其用作转义字符。因此,您可以定义任何单个字符,可能是下一个看到查询的开发人员更容易阅读的字符。另外,请尝试使用
\uuu
而不是
%
,因为下划线与单个字符匹配,因此可能会有括号