2015-09-04 2 views
3

Это не возвращает ожидаемые результаты. Не уверен, как я могу избежать левого и правого квадратных скобок, так что PATINDEX учитывает их.escape квадратных скобок в PATINDEX с SQL Server

Любые подсказки? Большое спасибо.

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

Это должно вернуть 3, но она возвращает 0.

ответ

2

Видимо закрытия скобки не должны быть экранированы:

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

вышеуказанные возвращения 4.

Кроме того, мы не может настроить escape-символ в сочетании с PATINDEX, как мы можем сделать с LIKE.