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

CONVERT() no SQL Server


No SQL Server, o CONVERT() 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:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 

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.

O style opcional argumento pode ser usado para especificar como a função deve traduzir a expression argumento. Por exemplo, você pode usar esse argumento para especificar o formato de data.

Exemplo


Aqui está um exemplo de conversão de uma string para decimal:
SELECT CONVERT(DECIMAL(5,2), '007');

Resultado:
7.00

String até a data


Aqui está um exemplo de conversão de uma string para uma data:
SELECT CONVERT(date, '09 Feb 2030');

Resultado:
2030-02-09

Neste caso, o CONVERT() 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 CONVERT(date, 'My Birthday');

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 CONVERT(date, '09/02/2030');

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 CONVERT(date, '09/02/2030');

Resultado:
2030-09-02

Desta vez interpretou a data como sendo o segundo dia de setembro.

O style Argumento


Podemos usar o style opcional argumento para especificar como a expressão deve ser traduzida.

Exemplo:
SET LANGUAGE British;
SELECT 
    CONVERT(date, '09/02/2030') AS "British",
    CONVERT(date, '09/02/2030', 101) AS "US",
    CONVERT(date, '09/02/30', 1) AS "US (short)",
    CONVERT(date, '20300902', 112) AS "ISO",
    CONVERT(date, '09.02.2030', 104) AS "German";

Resultado:
+------------+------------+--------------+------------+------------+
| British    | US         | US (short)   | ISO        | German     |
|------------+------------+--------------+------------+------------|
| 2030-02-09 | 2030-09-02 | 2030-09-02   | 2030-09-02 | 2030-02-09 |
+------------+------------+--------------+------------+------------+

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 'Age: ' + CONVERT(varchar(10), 27);

Resultado:
Age: 27

Aqui está o que acontece se não convertermos primeiro:
SELECT 'Age: ' + 27;

Resultado:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Age: ' 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 seqüência de caracteres em um número inteiro, mas isso falha porque a seqüência de caracteres não pode ser convertida em um número inteiro.

Truncar texto


Um pequeno truque útil que podemos fazer com o CONVERT() 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,
    CONVERT(varchar(20), ProductName) 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 CONVERT() A função funciona de maneira semelhante ao CAST() 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.