ssms не может преобразовать varchar в числовой - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь создать таблицу, которая хранит несколько значений, но возникает ошибка (показать преобразование типа данных varchar в числовой).

CREATE TABLE Employees
(
    Employee_iD TINYINT NOT NULL,
    Frist_Name VARCHAR(20) NULL,
    Last_Name VARCHAR(25) NOT NULL, 
    Email VARCHAR(25) NOT NULL,
    Phone_number NUMERIC,
    Hire_date DATE NOT NULL,
    Job_ID VARCHAR(10) NOT NULL,
    Salary DECIMAL(8, 2), 
    Commission_Pct DECIMAL(2, 2),
    Manager_ID TINYINT,
    Department_ID TINYINT
);

INSERT INTO Employees (Employee_iD, Frist_Name, Last_Name, Email, Phone_number, Hire_date, Job_ID, Salary, Commission_Pct, Manager_ID, Department_ID)
VALUES ('100', 'Steven', 'King', 'SKING', '5151234567', '1987-06-17', 'AD PRES', '24000.00', 'NULL', 'NULL', '90');

Я надеюсь, что получу данные, загруженные в мою таблицу

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Вы пытаетесь вставить значение 'NULL', равное varchar, в столбцы Commission_Pct и Manager_ID, которые определены как decimal(2,2) и numeric.Вместо этого вы должны использовать NULL без кавычек:

insert into Employees
(Employee_iD,Frist_Name,Last_Name,Email,Phone_number,Hire_date,Job_ID,Salary,Commission_Pct,Manager_ID,Department_ID)
values
('100','Steven','King','SKING','5151234567','1987-06-17','AD PRES',24000.00,NULL,NULL,'90');

Существуют также другие столбцы, определенные как числовые типы, для которых вы вставляете значения varchar, например Salary.Разница в том, что значение '24000.0', которое вы вставляете для Salary, может быть неявно преобразовано в DECIMAL(8, 2), поэтому ошибки не возникает.Но строковый литерал 'NULL' нельзя интерпретировать как NULL.

0 голосов
/ 14 мая 2019

Просто удалите апостроф 'xxx' из нестроковых значений ... tinyint, numeric и decimal.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...