Seguindo com as novidades do SQL 2012, neste post veremos novas funções (Conversion e Logical)

1) CONVERSION FUNCTIONS - PARSE, TRY_PARSE e TRY_CONVERT
Vamos começar com a função PARSE. É parecida com a Convert, mas tem algumas particularidades, o parâmetro de entrada deve ser uma string e na saída você pode definir a cultura.

1.1) PARSE
Vamos executar estes comandos:

Select PARSE('0.02315' as money) 
Select PARSE('002315' as int) 
select datename(month,(PARSE('5/12/2012' as datetime using 'pt-br'))) 
select datename(month,(PARSE('5/12/2012' as datetime using 'en-us'))) 
select PARSE('30/12/2012' as date using 'pt-br') 




1.2) TRY_PARSE

O comando abaixo retorno um erro, para nos ajudar no tratamento foi criado o comando TRY_PARSE que retorna null em caso de erro.

select PARSE('30/12/2012' as datetime)
select TRY_PARSE('30/12/2012' as datetime)

1.3) TRY_CONVERT

Caso o valor origem não seja uma string, continue usando o CONVERT.
porém agora existe o TRY_CONVERT, que assim como o TRY_PARSE, retorna NULL em caso de erro.

Quando é uma conversão permitida, mas com erro, ele retorna null

select TRY_CONVERT(int, '4s')

Quando é uma conversão não permitida, ele retorna erro
select TRY_CONVERT(xml, 4)





2)LOGICAL FUNCTIONS - CHOOSE, IIF

2.1) CHOOSE
O comando CHOOSE é uma forma mais limpa de fazer um CASE, ele utiliza valores sequenciais a partir de 1.

Declare @Cargo int
Set @Cargo=2

ANTIGO:
Select CASE When @Cargo=1 then 'Estagiário' 
        When @Cargo=2 then 'Analista' 
        When @Cargo=3 then 'Coordenador'
        When @Cargo=4 then 'Gerente'
END 

NOVO:
Select CHOOSE(@Cargo, 'Estagiário','Analista','Coordenador','Gerente')




Como ele não tem o ELSE, podemos ajustar com o ISNULL:

Select ISNULL(CHOOSE(@Cargo, 'Estagiário', 'Analista', 'Coordenador', 'Gerente'), 'Sem Valor')

2.2) IIF
O comando IIF é um velho conhecido e finalmente chegou ao SQL Server.

Ele utiliza a estrutura IF-THEN-ELSE, mas de uma forma mais limpa. IIF(Condição, se verdadeiro, se falso)

Declare @Cargo int
Set @Cargo=2
ANTIGO:
IF @Cargo=4
     Print 'Gerente'
ELSE
      Print 'Outro'
NOVO:
PRINT IIF(@Cargo=4,'Gerente','Outro')

Na parâmetro condição, também pode ser usado IN, Like, Exists, etc
Próximo Post falarei sobre  Date and time functions e String functions.