Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como CAST() funciona no SQL Server


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.