numeric(x+y,y)的长度与位数

在学习SQL时:有这样一句:

Score numeric (4,1)

,不解到底是多少位,被旧书上不负责任的笔记困扰

查询百度后:

numeric(x+y,y)

其中,y为小数位数,x为整数位数,x+y为总位数

则:numeric(4,1)总位数为4,其中小数1位,整数4-1=3位

这是对数字类型的数据类型而言,若对字符型,二进制数据型,其

datatype(m)

中的m表示长度,占用字节;数字类型的长度由SQL标准自动指定。

微软TECHNET的解释如下:https://technet.microsoft.com/zh-cn/library/ms190476.aspx

精度、小数位数和长度 (Transact-SQL)
其他版本
 
精度指数字的位数。 小数位数指小数点后的数字位数。 例如,数 123.45 的精度是 5,小数位数是 2。
在 SQL Server 中,numeric 和 decimal 数据类型的默认最大精度为 38。 在 SQL Server 早期版本中,默认最大精度为 28。
数字数据类型的长度是存储此数所占用的字节数。 字符串或 Unicode 数据类型的长度是字符个数。 binary、varbinary 和 image 数据类型的长度是字节数。 例如,int 数据类型可以有 10 位数,用 4 个字节存储,不接受小数点。int 数据类型的精度是 10,长度是 4,小数位数是 0。
当两个 char、varchar、binary 或 varbinary 表达式串联时,所生成表达式的长度是两个源表达式长度之和,或是 8,000 字符,以二者中少者计。
当两个 nchar 或 nvarchar 表达式串联时,所生成表达式的长度是两个源表达式长度之和,或是 4,000 字符,以二者中少者计。
使用 UNION、EXCEPT 或 INTERSECT 对数据类型相同但长度不同的两个表达式进行比较时,得到的长度为两个表达式中较大的长度。
除了 decimal 类型之外,数字数据类型的精度和小数位数是固定的。 如果算术运算符有两个相同类型的表达式,结果就为该数据类型,并且具有对此类型定义的精度和小数位数。 如果运算符有两个不同数字数据类型的表达式,则由数据类型优先级决定结果的数据类型。 结果具有为该数据类型定义的精度和小数位数。
下表定义了当运算结果是 decimal 类型时,如何计算结果的精度和小数位数。 当下列任一条件成立时,结果为 decimal:
两个表达式都是 decimal 类型。
一个表达式是 decimal 类型,而另一个是比 decimal 优先级低的数据类型。
操作数表达式由表达式 e1(精度为 p1,小数位数为 s1)和表达式 e2(精度为 p2,小数位数为 s2)来表示。 非 decimal 类型的任何表达式的精度和小数位数,是对此表达式数据类型定义的精度和小数位数。
时间: 2024-11-08 16:12:57

numeric(x+y,y)的长度与位数的相关文章

变量交换x,y=y,x实现机制--元组

python中有一种赋值机制即多元赋值,采用这种方式赋值时,等号两边的对象都是元组并且元组的小括号是可选的.通常形式为 x, y, z = 1, 2, 'a string' 等同于 (x, y, z) = (1, 2, 'a string') 这种赋值类型最经常用到的环境是变量交换,形如 x, y = y, x 这种交换方式无需中间变量即可交换两个变量的值.那么具体实现机制是怎样的呢? 运行时,首先构造一个元组(y, x),然后构造另一个元组(x, y),接着用元组(y, x)赋值给(x, y)

Pell方程(求形如x*x-d*y*y=1的通解。)

佩尔方程x*x-d*y*y=1,当d不为完全平方数时,有无数个解,并且知道一个解可以推其他解. 如果d为完全平方数时,可知佩尔方程无解. 假设(x0,y0)是最小正整数解. 则: xn=xn-1*x0+d*yn-1*y0 yn=xn-1*y0+yn-1*x0 证明只需代入. 如果忘记公式可以自己用(x0*x0-d*y0*y0)*(x1*x1-d*y1*y1)=1 推. 这样只要暴力求出最小特解,就可以用快速幂求出任意第K个解. Street Numbers Time Limit: 1000MS

下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10; int y=x++; printf("%d,%d",(x++,y),y++);

下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10; int y=x++; printf("%d,%d",(x++,y),y++); 输出结果为A  (y++优先级比较高,所以先计算y++,再计算()里面的内容) 原文地址:https://www.cnblogs.com/dyb-tsyyl/p/10108933.html

【POJ 3243】Clever Y 拓展BSGS

调了一周,我真制杖,,, 各种初始化没有设为1,,,我当时到底在想什么??? 拓展BSGS,这是zky学长讲课的课件截屏: 是不是简单易懂.PS:聪哥说“拓展BSGS是偏题,省选不会考,信我没错”,那是因为聪哥早就会了,所以他觉得学这个没用,信他才怪233 #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef lo

x+y=xy

有一天,我拿这一本本子给两位同学看,问他们这本本子多少钱,一个说3块,一个说1.5块,但它实际上是4.5块.于是,我们发现,3X1.5=4.5,3+1.5=4.5.那么这样的数有哪些呢?        我们可以列出方程"x+y=xy"变形可得"y=x/(x-1)",那么我们可以发现它的正整数解只有“x=2,y=2”,证明如下:            当x=1时,1+y=y,不成立,舍去:            当x=2时,可得“x=2,y=2”:          

【EXT-BSGS算法求离散对数】POJ Clever Y 3243

Clever Y Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7259 Accepted: 1795 Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, Y, Z, we all know how to figure out K fast. However, given X,

[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性

大家应该知道如何设置一个view组件的位置把,是的,如下: view.frame=CGRectMake(x,y,width,height);//设置组件的x,y坐标,设置组件的宽度高度... 如果我单独要设置坐标或者宽度高度,得这样: view.frame.size.width=100; view.frame.size.height=100; 如果你想偷个懒,比如: view.frame.size=(CGSize){200,200};//这个语句会报错,因为无法对size赋值 通过上面的代码,大

关于ax+by=c的解x,y的min(|x|+|y|)值问题

首先我们移动一下项,并强行让a>b. 然后我们可以画出这样一个图像 我们发现,在线段l与x轴交点处的下方,x,y的绝度值是递增的,所以我们不考虑那个最小点在下端. 之后我们发现在点的上端,因为斜率小于-1,x的减少远没有y加的快,所以我们知道极点在l与x轴的交汇处. 但是该点不一定是整点啊.. 所以我们只要找到它上面和下面最近的两个整点即可. 所以我们求ax+by=c最小的正整数解y即可,之后调出x,然后y减去a,再求x,比较两次min(|x|+|y|),就可以得出答案了. 当然如果第一次求出来

创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它。

public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public void Point() { this.x = x; this.y = y; } } packa