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.