Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre tipos de campos

Defini o campo [MATRICULA] como CHAR, no entanto, ao escrever o código para resolver o desafio acabei esquecendo de colocar as aspas para registar a matrícula. Rodei o SELECT e vi que ele gravou 235 ao invés do 00235. Não deveria dar erro já que o campo [MATRICULA] foi configurado como CHAR e não outro campo de número?

2 respostas
solução!

Olá Roberto, tudo bom?

Então não dá erro por que esta dentro da regra, quando você criou o campo de [MATRICULA] você definiu como um CHAR (5), ou seja, sim, é possível colocar valores inferiores ao limite máximo que é cinco caracteres:

CREATE TABLE [TABELA DE VENDEDORES]
(
    [MATRICULA] [char](5) NULL,
    [NOME] [varchar](100) NULL,
    [PERCENTUAL COMISSAO] [float] NULL
)

Respondendo a sua pergunta: Não deveria dar erro já que o campo [MATRICULA] foi configurado como CHAR e não outro campo de número?

Não, Pois um CHAR permite colocar caracteres tanto numérico quanto de texto, se você executar o código abaixo ele rodaria normalmente, se eu substituísse o número 00235 por 'ABC', agora em vez de ter criado o campo de [MATRICULA] com um Char (5) e sim com INT então, sim, ele ocorreria o erro, mas no caso acima você apenas reduziu a quantidade de números quando foi inserir.

Esse seria o erro que ocasionaria caso eu colocasse qualquer outro tipo de carácter caso esse campo fosse um INT:

INSERT INTO [TABELA DE VENDEDORES]
(MATRICULA,NOME,[PERCENTUAL COMISSAO])
VALUES
('abc','Márcio Almeida Silva',0.08);
Mensagem 245, Nível 16, Estado 1, Linha 9
Falha ao converter o varchar valor 'abc' para o tipo de dados int.
Horário de conclusão: 2023-02-25T12:52:29.0378303-03:00

Espero ter respondido sua dúvida :)

Muito obrigado pelos esclarecimentos, Matheus.