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

时间:2015-09-04 16:59:17

标签: sql-server-2012

这不会返回预期结果。我不确定如何逃脱左右方括号,以便PATINDEX将它们考虑在内。

任何线索?非常感谢。

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

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

1 个答案:

答案 0 :(得分:4)

显然关闭括号不需要转义:

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

以上返回4.

此外,我们无法像使用LIKE一样自定义与PATINDEX结合使用的转义字符。