Microsoft T-SQL: posso converter smallint para varchar

Pode ser só eu, mas..... Apesar do fato de que a maioria dos desenvolvedores sql podem considerar o cast & convert como algo muito básico, e isso pode ser verdade, eu acho a página de documentação da Microsoft no CAST & CONVERT para ser uma das mais hediondas, não intuitivamente-dispostas, difícil de entender coisas que eu já vi. Grande parte da sua documentação é excelente. Como constantemente tentando misturar a página inteira em uma mistura de ambos molde e converter, pulando para trás e para a frente em cada frase... em vez de lidar com eles separados. E quem coloca o tipo de alvo como o primeiro argumento? Colocar a expressão como o primeiro argumento seria mais intuitivo - e seguir os outros 99% da sintaxe de numerosas linguagens de programação. UH [9]}

MS diz que eu só posso converter para 3 tipos de dados: (bem, na verdade eu não estou realmente certo se isso se aplica tanto para o elenco e converter, uma vez que eles são, de fato, diferentes... Mas de acordo com o layout dessa webpage, aparentemente se aplica igualmente a ambos - embora eu já saiba por um fato que não é verdade para o elenco, que eu uso muito mais frequentemente).

Diz: "é o tipo de dados alvo. Isto inclui xml, bigint e sql_variant"

Deixando de lado, de momento, o facto de eu ter lançado as coisas como muitos outros tipos de dados a toda a hora (data, varchar),

minha pergunta imediata é: se eu só posso converter para esses tipos de dados, então por que isso funciona?

select CONVERT(varchar(200), cast(50 as smallint))
E, por fim, gostaria de correr um ... que vai ter um ...e ... colocando-o numa coluna varchar(200).

tudo o que estou a tentar fazer é evitar quaisquer falhas, por isso talvez eu não "precise" de converter ou lançar para {[[4]}, mas qualquer comment on

  1. resposta sobre o que é o meu aparente mal-entendido sobre a documentaçãoCONVERT

ou

  1. como convertê-lo de forma segura para inserir em varchar
São bem-vindos. Desde que não sejas apenas demasiado desagradável, já que há sempre aqueles fãs da MS que ficam quentes debaixo do colarinho em todas as críticas de MS .. :|

Author: marc_s, 2016-04-21

1 answers

SIM, pode converter desmallint paravarchar .

1) resposta sobre o que é meu aparente mal-entendido sobre o convertido documentação

Isto pode ser produto da falta de compreensão geral sobre quais tipos de dados são, como eles podem ser convertidos de um tipo para outro e igualmente importante; que estilos são quando se trata da representação estética de um tipo de dados.

O elenco é uma operação explícita sem opções de estilo. O CONVERT é também um explícito que lhe dá a capacidade de especificar um estilo para a saída.

A documentação indica claramente:

Conversões Implícitas

Conversões implícitas são aquelas conversões que ocorrem sem especificando a função CAST ou CONVERT. Conversões explícitas são aquelas conversões que exigem que a função CAST ou CONVERT seja descrever. A ilustração que se segue mostra todos os aspectos explícitos e implicito conversões de tipo de dados que são permitidas para o sistema SQL Server-suppled dado. Estes incluem xml, bigint, e sql_variant. Não há conversão implícita na atribuição do tipo de dados sql_variant, mas há conversão implícita para sql_variant.

Para a sua segunda pergunta

2) Como converter de forma segura para inserir em varchar

Dependendo do que queres dizer com segurança. Converter para varchar é a conversão que mais provavelmente suceder. Mas sempre que for lançado para qualquer tipo de dados toher, você está intrinsecamente mudando a própria natureza dos dados e perderá a precisão ao lançar para tipos menores (ou aplicando estilos).

A documentação indica claramente:

Resultados de truncamento e Arredondamento

Quando converter caracteres ou expressões Binárias (char, nchar, nvarcar, varchar, binário ou varbinário) para uma expressão de diferentes tipos de Dados, Os dados podem ser truncados, apenas parcialmente apresentado , ou um erro é retornado porque o resultado é muito curto para exibir. Conversões para char, varchar, nchar, nvarchar, binário e varbinary são truncados, exceto para as conversões mostradas no seguinte tabela.

Por outras palavras, o casting nunca é seguro.
 1
Author: Ricardo C, 2016-04-21 19:22:54