日期:2014-05-18  浏览次数:20476 次

請教 :為何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