Olá galera o/

Na primeira postagem de 2020 iremos abordar sobre as funções de conversão TRY_CONVERT, TRY_CAST, PARSE, TRY_PARSE. Vamos ver como podemos utiliza-las e quais são suas finalidades.

Essas 4 funções foram introduzidas a partir da versão 2012 do SQL Server. As funções TRY_CONVERT e TRY_CAST são extensões das funções CONVERT e CAST, já as funções PARSE e TRY_PARSE são novas.

PARSE: Função usada para converter strings para os tipos de dados data/hora e número. Esta função pode receber até 3 parâmetros, o primeiro é a string (texto) que será convertida, o segundo parâmetro é o tipo de dados( tipo data ou numérico) e o terceiro é a cultura que se deseja formatar o valor convertido, este ultimo parâmetro é opcional.

Funções com o prefixo TRY_: As funções com o prefixo TRY_ no inicio realizam o tratamento dos dados retornando o valor NULL quando não consiguem converter o valor para o tipo desejado, ou seja, ao invés de fazer a execução da query falhar, o valor nulo é retornado.

Vamos aos exemplos

Ex.1: Vamos utilizar as funções CAST e CONVERT para converter um texto em número e  uma data errada. Será exibido duas mensagens informando que as conversões não serão possíveis e consequentemente fazendo a execução da query falhar.

SELECT CAST (‘ATENA’ AS INT)
GO

SELECT CONVERT (DATE, ‘2020-13-12’)
GO

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value ‘ATENA’ to data type int.

Msg 241, Level 16, State 1, Line 3
Conversion failed when converting date and/or time from character string.

Erro de conversão CAST/CONVERT
Erro de conversão CAST/CONVERT

Ex.2: Iremos executar a mesma query mostrada acima, porém utilizando as funções TRY_CONVERT e TRY_CAST. Vejam que ao invés de apresentar o erro, é retornado NULL para os valores não convertidos.

SELECT TRY_CAST (‘ATENA’ AS INT) as test_trycast
GO

SELECT TRY_CONVERT (DATE, ‘2020-13-12’) as test_tryconvert
GO

Funções TRY_CAST/TRY_CONVERT
Funções TRY_CAST/TRY_CONVERT

Ex.3: Vamos ver como funciona a conversão utilizando a função PARSE. Na primeira query utilizamos o PARSE para converter um texto com a data de hoje em português para o tipo DATE, perceba que foi utilizada a cultura PT-BR. Na segunda query conversão de um texto para DECIMAL. Na terceira conversão um texto com valor numérico separado por virgula para o tipo MONEY com a cultura PT-BR. Na quarta conversão um texto para o tipo DATETIME com cultura EN-GB.

SELECT PARSE (‘QUINTA-FEIRA, 02 DE JANEIRO DE 2020’ AS DATE USING ‘PT-BR’) AS PARSE_1

SELECT PARSE(‘1234’ AS DECIMAL(10, 2)) AS PARSE_2

SELECT PARSE(‘1,53’ AS MONEY USING ‘PT-BR’) AS PARSE_3

SELECT PARSE(’06/03/2020′ AS DATETIME USING ‘EN-GB’) AS PARSE_4;

Função PARSE
Função PARSE

Ex.4: Agora vamos simular um erro utilizando o PARSE. Na primeira query tentamos converter um texto com uma frase para o tipo DATETIME, e é exibido um erro informado que não podemos converter o mesmo. Já na segunda query utilizamos o TRY_PARSE com o mesmo texto, percebam que por não conseguir converter o valor retornado pela função é NULL.

SELECT PARSE (‘TODAY IS FRIDAY’ AS DATETIME USING ‘EN-US’) AS PARSE_ERROR

Msg 9819, Level 16, State 1, Line 1
Error converting string value ‘TODAY IS FRIDAY’ into data type datetime using culture ‘EN-US’.

Erro PARSE
Erro PARSE

SELECT TRY_PARSE (‘TODAY IS FRIDAY’ AS DATETIME) AS TRYPARSE

Função TRY_PARSE
Função TRY_PARSE

Podemos concluir que as novas funções TRY nos dão uma estrategia mais elegante no retorno de valores nulos, assim, não fazendo a execução da query falhar.

Espero que tenham gostado da postagem e que a mesma tenha sido clara e bem explicativa.

Quem quiser mandar comentários, sugestões, criticas e complementos, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para que possa melhorar as postagem para vocês.

Até a próxima o/

Divulguem nossas Redes Sociais:

Nos sigam no Instagram: consultabd

Nos sigam no Twitter

Deixem um like nos vídeos e se inscrevam no nosso canal do Youtube

Publicidade