STR (Transact-SQL)
Retorna dados de caractere convertidos de dados numéricos.
Sintaxe
STR (float_expression [ , length [ ,decimal ] ] )
Argumentos
float_expression
É uma expressão de tipo de dados numérico aproximado (float) com um ponto decimal.length
É o comprimento total. Isso inclui ponto decimal, sinal, dígitos e espaços. O padrão é 10.decimal
É o número de casas à direita do ponto decimal. decimal deve ser menor que ou igual a 16. Se decimal for maior que 16, o resultado será truncado com dezesseis casas à direita do ponto decimal.
Tipos de retorno
varchar
Comentários
Se fornecido, os valores para os parâmetros length e decimal para STR devem ser positivos. O número é arredondado para um número inteiro por padrão ou se o parâmetro decimal for 0. O comprimento especificado deve ser maior ou igual à parte do número antes do ponto decimal mais o sinal do número (se houver). Uma float_expression curta é justificada à direita no comprimento especificado, e uma float_expression longa é truncada com o número especificado de casas decimais. Por exemplo, STR (12,10) gera como resultado 12. É justificado à direita no conjunto de resultados. Entretanto, STR (1223,2) trunca o conjunto de resultados com **. As funções de cadeia de caracteres podem ser aninhadas.
Observação |
---|
Para converter a dados Unicode, use STR dentro de uma função de conversão CONVERT ou CAST. |
Exemplos
O exemplo a seguir converte uma expressão composta de cinco dígitos e um ponto decimal em uma cadeia de caracteres de seis posições. A parte fracionária do número é arredondada para uma casa decimal.
SELECT STR(123.45, 6, 1);
GO
Aqui está o conjunto de resultados.
------
123.5
(1 row(s) affected)
Quando a expressão excede o comprimento especificado, a cadeia de caracteres retorna ** para o comprimento especificado.
SELECT STR(123.45, 2, 2);
GO
Aqui está o conjunto de resultados.
--
(1 row(s) affected)
Até mesmo quando dados numéricos são aninhados em STR, o resultado são dados de caractere com o formato especificado.
SELECT STR (FLOOR (123.45), 8, 3;)
GO
Aqui está o conjunto de resultados.
--------
123.000
(1 row(s) affected)