所以我在其属性中创建了一个包含char,decimal和date数据类型的表。我收到了一些算术溢出错误的结果。不知道你是否可以帮我学习创建这张桌子。感谢:D
Create table JOB (JOB_CODE char (3), JOB_DESCRIPTION char(25), JOB_CHG_HOUR decimal (4,2), JOB_LAST_UPDATE date)
Insert into JOB (JOB_CODE, JOB_DESCRIPTION, JOB_CHG_HOUR , JOB_LAST_UPDATE )
Values (500, 'Progammer', 35.75, '26-Nov-09'),
(501, 'Systems Analyst', 96.75, '20-Nov-09'),
(502, 'Database Designer', 125.00, '24-Mar-10'),
(503, 'Electrical Engineer', 84.50, '20-Nov-09'),
(504, 'Mechanical Engineer', 67.90, '20-Nov-09'),
(505, 'Civil Engineer', 55.78, '20-Nov-09'),
(506, 'Clerical Support', 26.87, '20-Nov-09'),
(507, 'DSS Analyst', 45.95, '20-Nov-09'),
(508, 'Application Designer', 48.10, '24-Mar-10'),
(509, 'Bio Technician', 34.55, '20-Nov-09'),
(510, 'General Support', 18.36, '20-Nov-09')
这是确切的消息结果:
Msg 8115,Level 16,State 8,Line 1 算术溢出错误将数字转换为数据类型数字。 声明已经终止。
答案 0 :(得分:0)
您的字段JOB_CHG_HOUR
只能包含4位数字,包含两位小数,因此最多可达99,99。您正在尝试插入包含125,00作为JOB_CHG_HOUR
值的行。这就是为什么你会溢出(超过容量)的那个领域。请考虑将您的create语句更改为:
CREATE TABLE JOB
(
JOB_CODE CHAR(3),
JOB_DESCRIPTION CHAR(25),
JOB_CHG_HOUR DECIMAL(5,2), --will now hold up to 999,99
JOB_LAST_UPDATE DATE
);
此外,根据您拥有的表创建语句,字段JOB_CODE
的类型为CHAR(3)
,因此您需要在insert语句中使用引号。
INSERT INTO JOB (JOB_CODE, JOB_DESCRIPTION, JOB_CHG_HOUR , JOB_LAST_UPDATE)
VALUES('500', 'Programmer', 35.75, '26-Nov-09');
不要忘记声明末尾的分号;
!
答案 1 :(得分:0)
JOB_CHG_HOUR
是decimal (4,2)
来自文档:
s(比例)
将存储在小数点右侧的小数位数。从p中减去此数字,以确定小数点左侧的最大位数。
因此,您最多只剩下2位数,并且不会接受125.00