Microsoft T-SQL: posso converter smallint para varchar
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
- resposta sobre o que é o meu aparente mal-entendido sobre a documentação
CONVERT
ou
- como convertê-lo de forma segura para inserir em
varchar
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
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).2) Como converter de forma segura para inserir em varchar
A documentação indica claramente:
Por outras palavras, o casting nunca é seguro.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.