使用SQL Server转义PATINDEX中的方括号

Jan*_*ine 6 sql-server-2012

这不会返回预期的结果.不知道如何逃脱左右方括号,以便PATINDEX将它们考虑在内.

有线索吗?非常感谢.

SELECT 
    PATINDEX('%[[SQLSERV]].DBNAME.DBO.[[[0-9a-zA-Z]]]%','ert[SQLSERV].DBNAME.DBO.[Table name]asdadsf')
Run Code Online (Sandbox Code Playgroud)

这应该返回3,但它返回0.

Jan*_*ine 8

显然右括号不需要转义:

SELECT 
    PATINDEX('%[[]SQLSERV].DBNAME.DBO.[[][0-9a-zA-Z _-]%','ert[SQLSERV].DBNAME.DBO.[Table name]asdadsf')
Run Code Online (Sandbox Code Playgroud)

以上返回4。

此外,我们不能像使用 LIKE 那样自定义带有 PATINDEX 的转义字符。