Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Depósito no Microsoft Fabric
Banco de dados SQL no Microsoft Fabric
Retorna a posição inicial da primeira ocorrência de um padrão em uma expressão especificada, ou zero, se o padrão não for encontrado, em todos os tipos de dados de caractere e texto válidos.
Convenções de sintaxe de Transact-SQL
Syntax
PATINDEX ( '%pattern%' , expression )
Arguments
pattern
Uma expressão de caractere que contém a sequência a ser encontrada. Personagens coringa podem ser usados; no entanto, o caractere % deve vir antes e seguir o padrão (exceto quando você busca pelo primeiro ou último caractere). Padrão é uma expressão da categoria de tipo de dados da cadeia de caracteres. O padrão é limitado a 8.000 caracteres.
Note
Embora expressões regulares tradicionais não sejam compatíveis nativamente no SQL Server 2022 (16.x) e em versões anteriores, a correspondência de padrões complexos semelhantes pode ser obtida usando várias expressões curinga. Veja a documentação de operadores de strings para mais detalhes sobre a sintaxe dos curingas. Para informações sobre funções de expressões regulares no SQL Server 2025 (17.x), veja Funções de expressões regulares.
expression
Uma expressão, tipicamente uma coluna que é pesquisada pelo padrão especificado. a expressão pertence à categoria de tipo de dados string de caracteres.
Tipos de retorno
bigint se a expressão for dos tipos de dados varchar(max) ou nvarchar(max ); caso contrário, int.
Remarks
Se o padrão for NULL, PATINDEX retorna NULL.
Se a expressão for NULL, PATINDEX retornará um erro.
A posição inicial é PATINDEX1.
PATINDEX executa comparações com base na ordenação da entrada. Para executar uma comparação em uma ordenação especificada, você pode usar COLLATE para aplicar uma ordenação explícita à entrada.
Caracteres complementares (pares substitutos)
Quando você usa colações com caracteres suplementares (SC), o valor de retorno conta quaisquer pares substitutos UTF-16 no parâmetro de expressão como um único caractere. Para obter mais informações, consulte Suporte para ordenação e Unicode.
0x0000 (char(0)) é um caractere indefinido em ordenações do Windows e não pode ser incluído em PATINDEX.
Examples
A. Exemplo básico de PATINDEX
O exemplo a seguir verifica uma cadeia de caracteres curta (interesting data) em busca do local inicial dos caracteres ter.
SELECT PATINDEX('%ter%', 'interesting data') AS position;
Veja a seguir o conjunto de resultados.
position
--------
3
B. Usar um padrão com PATINDEX
O exemplo a seguir mostra a posição em que o padrão ensure começa em uma linha específica da DocumentSummary coluna da Document tabela no banco de dados AdventureWorks2025.
SELECT PATINDEX('%ensure%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
Veja a seguir o conjunto de resultados.
position
--------
64
Se você não restringir as linhas a serem pesquisadas usando uma WHERE cláusula, a consulta retornará todas as linhas da tabela e relatará valores não zero para as linhas em que o padrão foi encontrado e zero para todas as linhas em que o padrão não foi encontrado.
C. Usar caracteres curinga com PATINDEX
O exemplo a seguir usa os curingas % e _ para localizar a posição na qual o padrão 'en', seguido de qualquer outro caractere e 'ure' é iniciado na cadeia de caracteres especificada (o índice inicia em 1):
SELECT PATINDEX('%en_ure%', 'Please ensure the door is locked!') AS position;
Veja a seguir o conjunto de resultados.
position
--------
8
PATINDEX funciona da mesma forma que LIKE, então você pode usar qualquer curinga. Você não precisa colocar o padrão entre porcentagens.
PATINDEX('a%', 'abc') retorna 1 e PATINDEX('%a', 'cba') retorna 3.
Diferentemente de LIKE, PATINDEX retorna uma posição, semelhante ao que CHARINDEX faz.
D. Usar expressões curinga complexas com PATINDEX
O exemplo a seguir usa o [^]operador string para encontrar a posição de um caractere que não é um número, letra ou espaço.
SELECT PATINDEX('%[^ 0-9A-Za-z]%', 'Please ensure the door is locked!') AS position;
Veja a seguir o conjunto de resultados.
position
--------
33
E. Usar COLLATE com PATINDEX
O exemplo a seguir usa a função COLLATE para especificar explicitamente a ordenação da expressão que é pesquisada.
USE tempdb;
GO
SELECT PATINDEX('%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN);
GO
Veja a seguir o conjunto de resultados.
position
--------
9
F. Usar uma variável para especificar o padrão
O exemplo a seguir usa uma variável para passar um valor ao parâmetro do padrão . Este exemplo utiliza o banco de dados AdventureWorks2025.
DECLARE @MyValue AS VARCHAR (10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
Veja a seguir o conjunto de resultados.
position
--------
22
Conteúdo relacionado
- COMO (Transact-SQL)
- CHARINDEX (Transact-SQL)
- LEN (Transact-SQL)
- Tipos de dados (Transact-SQL)
- Funções de cadeia de caracteres (Transact-SQL)
- [ ] (Curinga – caracteres a serem correspondidos) (Transact-SQL)
- [^] (Curinga – caracteres que não correspondem) (Transact-SQL)
- _ (Curinga - corresponder a um caractere) (Transact-SQL)
- Caractere percentual (caractere curinga – caracteres a serem correspondentes) (Transact-SQL)