Introdução e exemplos da função SQL Server Choose ()

Introdução e exemplos da função SQL Server Choose ()

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


No artigo, uma instrução CASE no SQL, exploramos uma das expressões lógicas importantes – a instrução Case no SQL Server para retornar os valores com base na condição especificada. Hoje, falaremos sobre outra função lógica Choose () útil no SQL Server 2012 em diante e sua comparação com a instrução Case.

Uma visão geral da instrução CASE no SQL

Antes de prosseguirmos com a função Escolher, vamos ter uma rápida visão geral da instrução Case no SQL

  • É uma função lógica e definimos condições (na cláusula When) e ações seguidas pela cláusula Then

  • Depois que a expressão ou valor estiver em conformidade com a cláusula when, ele retornará o valor ou expressão correspondente na saída

  • Se nenhuma condição for atendida, ele retornará o valor especificado na cláusula Else

No exemplo abaixo, especificamos o ID do produto 1 na variável e ele retorna a saída ‘Bread and Biscuits’.

Instrução de Caso SQL

Introdução à função Choose () do SQL Server

Suponha que você precise especificar várias condições na instrução de caso. Nesse caso, o código geral será longo. Às vezes, é difícil examinar um código mais extenso e sempre procuramos funções que poderiam fazer um trabalho semelhante com esforços mínimos e sem nenhum impacto no desempenho. A função Choose faz o mesmo trabalho para nós e pode ser usada como uma substituição da instrução Case.

Sintaxe da função Escolher

Usamos a função Choose () para retornar um item em uma posição específica do índice da lista de itens.

Sintaxe da função Escolher: ESCOLHA (índice, valor[1], valor[2] ,….. valor[N] )

  • Índice: É um número inteiro que especifica a posição do índice do elemento que queremos na saída.
    A função Escolha não usa um método de indexação baseado em zero. Nesta função, o primeiro item começa primeiro, o
    segundo elemento na 2ª posição do índice e assim por diante. Se não usarmos um número inteiro nesse argumento, o SQL o converterá em número inteiro, caso contrário, retornará um valor NULL
  • Itens: É uma lista separada por vírgula de qualquer tipo. A função Escolher seleciona os itens de acordo com o índice definido no primeiro argumento

Para o índice, escolha a função retorna valor[1] para a posição do índice 1. Vamos entender escolher a função no SQL usando vários exemplos.

Exemplo 1: Função SQL Server CHOOSE () com valores literais

Neste exemplo, usamos escolher() para retornar valores de diferentes posições de índice. A primeira instrução select retorna NULL porque esta função não usa um método de indexação zero.

Função ESCOLHER do SQL Server com valores literais

Da mesma forma, se escolhermos o valor do índice fora do intervalo, ele retornará NULL também. Por exemplo, temos cinco registros na lista acima. Vamos especificar a posição do índice como seis.

Valor zero do índice

Exemplo 2: Função SQL Server CHOOSE () com valores de índice decimal

Conforme especificado anteriormente, usamos o tipo de dados inteiro no primeiro argumento. Suponha que você especifique a posição do índice como 2,5,
qual seria a saída?

A seguir, especificamos vários valores no argumento index com decimais. Nós obtemos a mesma saída de todos os
consultas abaixo. A função Choose () arredonda o valor decimal para o valor mais baixo. Nesse caso, todos os valores de índice
converter para 2 e retornar banana como saída.

Valores decimais do índice

Exemplo 3: valores de sequência no argumento de índice da função Choose () do SQL Server

Neste exemplo, especificamos valores de índice entre aspas simples. Faz argumento de índice como valores de sequência.

O SQL Server converte esses valores de seqüência de caracteres em números inteiros e funciona de maneira semelhante à especificação de valores inteiros, como mostrado abaixo.

Valores de sequência no argumento do índice

No entanto, se especificarmos seqüências de caracteres como ‘dois’ no argumento do índice, isso resultará em uma mensagem de erro devido a uma falha na conversão do tipo de dados.

Valor da string

Exemplo 4: Usar a função Choose Server do SQL Server e a precedência do tipo de dados

Veja o seguinte código SQL. Neste, especificamos valores de tipo de dados inteiro e flutuante.

A função Choose () retorna o tipo de dados de precedência mais alta na saída. Um valor flutuante ou decimal tem alto
precedência sobre o número inteiro, portanto, obtemos saída no tipo de dados de alta precedência, como mostrado abaixo.

Selecionar instruções SQL

Vamos adicionar uma string ‘abc’, e obtemos a mesma saída da função Choose ().

Saída da função Escolha do SQL Server

Se especificarmos o índice 5 que contém ‘abc’, você receberá uma mensagem de erro.

Erro de conversão de dados

Recebemos esse erro porque o servidor SQL não pode alterar o tipo de dados varchar para o tipo de dados numérico com alta
precedência. Você pode consultar Precedência do tipo de dados para obter mais detalhes.

Exemplo 5: Use a função Choose () do SQL Server com Select SQL Statements

Nos exemplos anteriores, entendemos a funcionalidade da função SQL Choose (). Neste exemplo, usamos na instrução select para recuperar registros do diretório[[AdventureWorks]base de dados. É um banco de dados de exemplo para o SQL Server e você pode baixar uma cópia de backup do Microsoft Docs.

Obtemos os registros dos funcionários junto com a data de contratação usando a consulta acima.

Função de Escolha do SQL Server com Selecionar Instruções SQL

Agora, suponha que desejamos saber o mês para cada funcionário. Nós podemos usar o MÊS() função para retornar
o componente do mês a partir da data. Na consulta abaixo, especificamos nomes de meses e a função Choose () retorna o
mês da lista conforme o mês especificado no argumento do índice.

Função mês

Exemplo 5: Usar a função Choose () do SQL Server com dados JSON

Também podemos usar a função Choose () para trabalhar com dados JSON. Você pode entender JSON e suas diferentes funções
usando a linguagem SQLShack JSON
categoria.

Aqui, usamos uma função OPENJSON com valor de tabela. Retorna o tipo de dados do valor em dados JSON no diretório [type]
coluna. Na consulta abaixo, usamos [type]+1 no argumento do índice para recuperar o valor correspondente do
Lista. Usamos +1 porque [type] retorna 0 para o valor NULL, mas a posição zero do índice não está disponível no SQL Choose ()
função.

Dados JSON

Comparação entre a instrução CASE e a função Choose () no SQL Server

Como você deve estar familiarizado com a instrução SQL CASE e a função SQL Choose () a partir de agora. Você pode pensar, nós podemos
obtenha os mesmos resultados da função SQL Choose () da instrução SQL Case.

Vamos converter a consulta SQL do exemplo 5 acima da função SQL Choose () para Instrução de Caso no SQL para obter o mesmo
resultados.

A consulta acima retorna os mesmos resultados que da função SQL Choose.

Comparação da instrução CASE no SQL

Você pode pensar qual deles devemos usar? Existe alguma diferença entre esses dois?

Para obter as respostas para essas perguntas, execute a consulta com SQL Choose () e a instrução Case no SQL juntas em uma consulta
janela do SSMS. Use a instrução Go para separar os lotes. Ative o Plano de execução real (pressione
CTRL + M)
para comparar os dois planos de execução de consultas. Você também pode usar o recurso de plano de comparação do SSMS para
isto. Você pode consultar Como
compare os planos de execução de consultas no SQL Server 2016 para ele.

Ele está fazendo uma varredura de índice em cluster em busca de um índice em [HumanResource].[Employee] tabela para ambas as consultas. O custo de ambas as consultas também é semelhante, como mostrado abaixo.

Varredura de índice em cluster

Agora, vamos verificar as propriedades da função escalar de computação no plano de execução real da função SQL Choose ().

Ele usa a instrução Case em segundo plano. Ele mostra que a instrução Case nas funções SQL e SQL Choose () são iguais. Você pode usar qualquer um deles e isso não afeta o desempenho da consulta.

A função Choose () é uma abreviação da instrução Case. Você pode escrever códigos t-SQL menores para fazer similar usando
função choose () em comparação com a instrução Case. Podemos ver essa diferença nas consultas SQL usadas para Case
instrução e SQL Choose (). Você também pode comparar os outros parâmetros nesses planos, e todos os parâmetros parecem semelhantes.

Computar propriedades escalares

Conclusão

Neste artigo, exploramos a função Choose () no SQL Server para retornar o valor com base na posição do índice. Em sua comparação com uma instrução Case no SQL, descobrimos que ambas as funções são as mesmas logicamente. Se você usar instruções de caso em sua consulta, recomendo que você explore também a função Choose ().

Rajendra Gupta
Últimas mensagens de Rajendra Gupta (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Atualização cumulativa nº 1 do SQL Server 2019