Muitos RDBMSs têm um
INSTR() função que nos permite encontrar uma substring dentro de uma string. Alguns (como MySQL e MariaDB) também possuem um LOCATE() função e um POSITION() função (também suportada pelo PostgreSQL), que fazem algo semelhante. SQL Server não tem um
INSTR() função. Nem tem um LOCATE() ou POSITION() função. Mas tem o CHARINDEX() função que faz a mesma coisa. SQL Server também tem o
PATINDEX() função, que faz um trabalho semelhante ao CHARINDEX() . O CHARINDEX() Função
Aqui está um exemplo do
CHARINDEX() função:SELECT CHARINDEX('news', 'No news is good news'); Resultado:
4
A função aceita um terceiro argumento que nos permite especificar onde iniciar a pesquisa:
SELECT CHARINDEX('news', 'No news is good news', 5); Resultado:
17
Neste exemplo, iniciamos a busca na posição 5, que foi após o início da primeira ocorrência de
news , então retornou a posição da segunda ocorrência. O PATINDEX() Função
O
PATINDEX() função é semelhante a CHARINDEX() , exceto que nos permite procurar um padrão, em vez de uma string específica. Aqui está um exemplo para ilustrar o que quero dizer:
SELECT PATINDEX('%ew%', 'No news is good news'); Resultado:
5
Aqui está o que acontece se eu remover os caracteres curinga:
SELECT PATINDEX('ew', 'No news is good news'); Resultado:
0
Veja
PATINDEX() vs CHARINDEX() para saber mais sobre as diferenças entre essas duas funções.