Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Inserir String num campo Small money

Na aula 4 (Manutenção dos dados nas tabelas), eu inseri o preço como string '4.56' (caso 1) e também '4,56' (caso 2)

Por isso, gostaria de saber porque a inserção não me retorna erro, se o campo "Preço" é smallmoney (caso 1) e porque (no caso 2) ele me retorna 456,00 no campo preço.

Para o caso 2 testei também '4,5678' e me retornou 45678,00 e fiquei curiosa porque isso acontece. Segue abaixo o código (não difere muito da aula).

INSERT INTO [TB_PRODUTOS]
( --a ordem dos campos aqui não precisa ser a mesma dos campos como estão na tabela
[Codigo do produto],
[Nome do Produto],
Embalagem,
Tamanho,
Sabor,
[Preco de lista]
)
VALUES--strings entre aspas simples, numéricos sem as aspas simples e ponto como separador decimal
(
'1040107',
'Light - 350 ml - Melância',
'Lata',
'350 ml',
'Melancia',
4.56 -- colocando '4.56' também dá pra inserir. Com '4,56' ele entende que é 456,00
)
1 resposta
solução!

Olá Luciana!

Isso ocorre devido ao tipo do separador. O ponto (.) serve para separar o valor inteiro do valor decimal (para nós é 4,56 e no padrão americano fica 4.56). A vírgula serve para separar números como mil (para nós fica 1.000 mas no padrão americano é 1,000) e milhão (para nós fica 1.000.000 mas no padrão americano é 1,000,000). Sim, nas linguagens de programação (incluindo o SQL) é usado aquele padrão estranho por ser baseado no inglês.

Então, quando chega a entrada do valor '4,56' é ignoradas as vírgulas e é reconhecido como 456 devido a esse padrão. Então, sempre que inserir números decimais no banco, deve sempre separar o valor inteiro do decimal com o ponto.

Espero ter ajudado!