請教 :為何SQL語句沒有生效 謝謝(實在只有5份了)
create table zz(
A varchar(8) not null,
B varchar(4) not null,
c decimal(13,6) null,
d datetime null,
constraint PK_zz primary key(A, B)
)
為何c decimal的長度還是為9
c decimal(13,6) null,沒有作用 謝謝
------解决方案----------------------9是存儲數據所占用的字節數
------解决方案--------------------decimal 和 numeric
带定点精度和小数位数的 numeric 数据类型。
decimal[(p[, s])] 和 numeric[(p[, s])]
定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。
p(精度)
指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。
s(小数位数)
指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化。
精度 存储字节数
1 - 9 5
10-19 9
20-28 13
29-38 17
------解决方案--------------------c decimal(13,6)
你这样指定长度的时候,c的长度肯定是9阿!
长度取决于精度!
c decimal(9,6) 这个长度是5
不过不知道能不能满足楼主的需求
------解决方案--------------------decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )]
固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词为 dec 和 dec(p, s)。numeric 在功能上等价于 decimal。
p(精度)
最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。
s(小数位数)
小数点右边可以存储的十进制数字的最大位数。小数位数必须是从 0 到 p 之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为 0;因此,0 <= s <= p。最大存储大小基于精度而变化。
精度 存储字节数
1 - 9
5
10-19
9
20-28
13
29-38
17