Transact-SQL é o nome de uma linguagem que estende as funci...
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')
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