Transact-SQL é o nome de uma linguagem que estende as funci...

Próximas questões
Com base no mesmo assunto
Q1760402 Banco de Dados

Transact-SQL é o nome de uma linguagem que estende as funcionalidades do padrão SQL-92. Ela nos permite utilizar um grande leque de funções e recursos que auxiliam os desenvolvedores na construção de aplicações que manipulam dados armazenados no SGBD SQL Server. A respeito do uso de funções pertencentes a linguagem Transact-SQL, considerando que a instrução abaixo foi executada no SQL Server 2017, marque a alternativa que indica corretamente o valor que será retornado após sua execução.


select PATINDEX('_B_D%', 'ABCDEF')

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - 1.

Vamos analisar juntos a função PATINDEX para entender como ela funciona. A função PATINDEX do Transact-SQL é usada para retornar a posição inicial de um padrão específico em uma string de texto. O padrão é definido pelo usuário e pode incluir caracteres curinga, como '%' para qualquer sequência de caracteres e '_' para um único caractere.

Aqui está a função que foi usada:

select PATINDEX('_B_D%', 'ABCDEF')

Para entender o resultado, precisamos decompor o padrão '_B_D%'. O primeiro caractere curinga '_', representa qualquer caractere único, então ele corresponderá ao 'A' no início da string 'ABCDEF'. Em seguida, o padrão especifica um 'B', que corresponde diretamente ao segundo caractere da string. O próximo caractere curinga '_' novamente corresponde a qualquer caractere único, que neste caso é o 'C'. E o 'D' se alinha com o quarto caractere da string. Depois disso, temos '%', que pode corresponder a qualquer sequência de caracteres, mas não importa para a posição inicial do padrão.

Por que a alternativa B está correta:

O resultado da função PATINDEX('_B_D%', 'ABCDEF') é 1, porque o padrão '_B_D%' começa a se encaixar no primeiro caractere da string 'ABCDEF'. Portanto, a posição inicial do padrão é 1. A função PATINDEX retorna 0 se o padrão não for encontrado. Não há retorno de 'true' ou 'null' para essa função, pois ela retorna um valor numérico que representa a posição do padrão.

Reforçando, o conhecimento necessário para resolver essa questão está relacionado a entender como funcionam as funções de manipulação de strings no SQL Server, especialmente a função PATINDEX, e conhecer os caracteres curinga usados em padrões de busca em strings.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Gabarito: B

As funções CHARINDEX e PATINDEX basicamente fazem a mesma coisa, retornam a posição inicial de um padrão que você especifica. PATINDEX pode usar caracteres curingas, mas a CHARINDEX não.

Ambas as funções usam dois argumentos. Com PATINDEX, você deve incluir sinais de porcentagem antes e depois do teste padrão, a menos que você está procurando o padrão como os primeiros (omita o primeiro%) ou os últimos (omita o último%) caracteres em uma coluna. Para CHARINDEX, o padrão não pode incluir caracteres curinga. O segundo argumento é uma expressão de caracteres, geralmente um nome de coluna.

Como a função CHARINDEX, a função PATINDEX retorna a posição inicial do padrão dentro da sequência que está sendo pesquisada.

Se você tem uma chamada de função PATINDEX assim: select PATINDEX('_B_D%', 'ABCDEF')

Em seguida, o resultado da chamada da função PATINDEX é 1.

% É usado para representar qualquer quantidade de qualquer coisa.

_ É usado para encontrar apenas uma ocorrência de qualquer coisa.

As funções CHARINDEX e PATINDEX basicamente fazem a mesma coisa, retornam a posição inicial de um padrão que você especifica. PATINDEX pode usar caracteres curingas, mas a CHARINDEX não pode.

Ambas as funções usam dois argumentos. Com PATINDEX, você deve incluir sinais de porcentagem antes e depois do teste padrão, a menos que você está procurando o padrão como o primeiro (omita o primeiro%) ou os últimos (omita o último%) caracteres em uma coluna. Para CHARINDEX, o padrão não pode incluir caracteres curinga. O segundo argumento é uma expressão de caracteres, geralmente um nome de coluna.

Exemplo usando CHARINDEX:

SELECT CHARINDEX (‘SQL’, ‘Microsoft SQL Server’)

Esta chamada de função irá retornar a localização da cadeia de caracteres “SQL”, começando, na seqüência de “Microsoft SQL Server”. Neste caso, a função CHARINDEX irá retornar o número 11, que como você pode ver é a posição inicial de “S” em cadeia “Microsoft SQL Server”. 

Agora dizer que temos o seguinte comando CHARINDEX:

SELECT CHARINDEX (‘7.0’, ‘Microsoft SQL Server 2000’)

Neste exemplo, a função CHARINDEX retornará zero, uma vez que a cadeia de caracteres “7.0” não pode ser encontrado na seqüência de “Microsoft SQL Server 2012”.

Como funciona o PATINDEX:

Como a função CHARINDEX, a função PATINDEX retorna a posição inicial do padrão dentro da seqüência que está sendo pesquisada. Se você tem uma chamada de função PATINDEX assim: PATINDEX (‘%BC%’, ‘ABCD’)SELECT PATINDEX (‘%BC%’, ‘ABCD’)

Em seguida, o resultado da chamada da função PATINDEX é 2 , O sinal % é um carácter universal (carácter curinga). 

Existem quatro tipo de caractere curinga disponível em SQL Server. Temos que usar LIKE ou palavra-chave PATINDEX.

% É usado para representar qualquer coisa antes, depois ou toda string.

[] É usado para procurar caráter único dentro de um intervalo (AZ ou 0-9) ou um único caractere no padrão de correspondência.

[^] É usado para procurar por uma seqüência sem o caráter dado no colchete após ^ símbolo e na posição especificada.

_ (Sublinhado) Usado para encontrar uma string que contenha o texto não levando em consideração o primeiro carácter.

fonte: https://jvilar.wordpress.com/2015/11/22/comparando-charindex-e-patindex/

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo