No SQL Server, o
CAST()
função converte uma expressão de um tipo de dados para outro. Aqui está uma visão geral rápida da função com exemplos.
Sintaxe
A sintaxe fica assim:
CAST ( expression AS data_type [ ( length ) ] )
Onde
expression
é a expressão a ser convertida, data_type
é o novo tipo de dados e length
é um comprimento opcional para o novo tipo de dados. Exemplo
Aqui está um exemplo de conversão de uma string como decimal:
SELECT CAST('007' AS DECIMAL(5,2));
Resultado:
7.00
String até a data
Aqui está um exemplo de conversão de uma string para uma data:
SELECT CAST('09 Feb 2030' AS date);
Resultado:
2030-02-09
Neste caso, o
CAST()
A função foi capaz de determinar quais partes da data são quais porque eu forneci a data em um formato que ela reconhece. Passar um valor que não pode ser convertido como uma data resulta em um erro:
SELECT CAST('Next Xmas' AS date);
Resultado:
Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string.
Localidade
O idioma da sessão atual pode fazer a diferença em como as datas são interpretadas.
Aqui está o que acontece ao usar o idioma britânico:
SET LANGUAGE British;
SELECT CAST('09/02/2030' AS date);
Resultado:
2030-02-09
Neste caso, a data foi interpretada como sendo o dia nove de fevereiro.
Vamos mudar o idioma para
us_English
:SET LANGUAGE us_English;
SELECT CAST('09/02/2030' AS date);
Resultado:
2030-09-02
Desta vez interpretou a data como sendo o segundo dia de setembro.
Concatenação de strings
Aqui está um exemplo de conversão de um valor numérico para uma string para concatenar o valor com uma string:
SELECT 'Likes: ' + CAST(178 AS VARCHAR(10));
Resultado:
Likes: 178
Aqui está o que acontece se não lançarmos:
SELECT 'Likes: ' + 178;
Resultado:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Likes: ' to data type int.
Ao tentar concatenar dois valores com tipos de dados diferentes, o SQL Server precisa converter implicitamente um dos valores para usar o tipo de dados do outro, para que ambos sejam do mesmo tipo de dados antes de realizar a concatenação. Segue as regras de precedência de tipo de dados para fazer essa conversão.
No SQL Server, o
INT
tipo de dados tem uma precedência maior que VARCHAR
. Portanto, no exemplo acima, o SQL Server tenta converter a string em um inteiro. Mas isso falha porque a string não pode ser convertida em um inteiro.
Truncar texto
Um pequeno truque útil que podemos fazer com o
CAST()
função é truncar strings mais longas para um comprimento mais legível. Aqui está um exemplo de truncar o texto selecionado de uma tabela de banco de dados:
SELECT
ProductName,
CAST(ProductName AS VARCHAR(20)) AS Truncated
FROM Products;
Resultado:
+---------------------------------+----------------------+ | ProductName | Truncated | |---------------------------------+----------------------| | Left handed screwdriver | Left handed screwdri | | Long Weight (blue) | Long Weight (blue) | | Long Weight (green) | Long Weight (green) | | Sledge Hammer | Sledge Hammer | | Chainsaw | Chainsaw | | Straw Dog Box | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu | | Right handed screwdriver | Right handed screwdr | +---------------------------------+----------------------+
Mais informações
O
CAST()
A função funciona de maneira semelhante ao CONVERT()
função, e muitas conversões de dados podem ser feitas usando qualquer um. Dito isto, existem diferenças entre eles. Consulte a documentação da Microsoft para
CAST()
e CONVERT()
para obter informações mais detalhadas sobre como usar esta função.