SQL Server 数据类型及转换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
decimal 和numeric
https:///zh-cn/library/ms187746.aspx
SQL Server (starting with 2008)
decimal[ (p[ ,s] )] 和numeric[ (p[ ,s] )]
numeric在功能上等价于decimal,有效值的范围为- 10^38 +1 到10^38 –1,(1-38,默认18)。p固定精度:最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数;
s小数位数。。
在Transact-SQL 语句中,带有小数点的常量将自动转换为numeric数据值,而且使用必需的最小精度和小数位数。例如,常量12.345 将被转换为精度为5,小数位数为 3 的numeric值。
(1)Float =>decimal或numeric
在将float 值或实数值转换为decimal 或numeric 类型时,decimal 值不会超过17 位小数。任何小于5E-18 的float 值总是会转换为0。
int、bigint、smallint 和tinyint
https:///zh-cn/library/ms187745.aspx
SQL Server (starting with 2008)
仅当参数表达式为bigint数据类型时,函数才返回bigint。SQL Server 不会自动将其他整数数据类型(tinyint、smallint和int)提升到bigint。
查询中的类似表达式有时可能会生成不同的结果。如果查询不是自动参数化的,则将常量值转换为指定的数据类型之前,首先将其转换为numeric,该数据类型的精度很大足以保存常量的值。例如,常量值1 转换为numeric (1, 0),常量值250 转换为numeric (3, 0)。
Int ->tinyint : 发生数据类型 tinyint 的算术溢出错误,值 = 333。语句已终止
float[(n)]
其中n为用于存储float数值尾数的位数(以科学记数法表示),因此可以确定精度和存储大小。如果指定了n,则它必须是介于1和53之间的某个值。n的默认值为53。
datetime
用于定义一个与采用24 小时制并带有秒小数部分的一日内时间相组合的日期。
https:///zh-cn/library/ms187819.aspx
对于新的工作,请使用time、date、datetime2和datetimeoffset数据类型。这些类型符合SQL 标准。它们更易于移植。time、datetime2和datetimeoffset提供更高精度的秒数。
Datetime日期范围1753 年1 月1 日到9999 年12 月31 日
时间范围00:00:00 到23:59:590.997 YYYY-MM-DD hh-mm-ss[.mmm]
目标数据格式的样式在下列类型间转换时才有效
(1)datetime 或smalldatetime 数据转换成字符数据(nchar、nvarchar、char、varchar、nchar 或nvarchar 数据类型)
(2)已知日期或时间格式的字符数据转换成datetime 或smalldatetime 数据,或是字符串格式
(3)用于将float、real、money 或smallmoney 数据转换成字符数据(nchar、nvarchar、char、varchar、nchar 或nvarchar 数据类型)。
char 和varchar
char [ ( n ) ]
固定长度,非Unicode 字符串数据。n用于定义字符串长度,并且它必须为1 到8,000 之间的值。存储大小为n字节。char的ISO 同义词为character。
varchar [ ( n | max ) ]
可变长度,非Unicode 字符串数据。n用于定义字符串长度,并且它可以为1 到8,000 之间的值。max指示最大存储大小是2^31-1 个字节(2 GB)。存储大小为所输入数据的实际长度+ 2 个字节。varchar的ISO 同义词为charvarying或charactervarying。
Varchar(n) n修改变小,数据库终止操作,将截断
Money->varchar(n)整数长度加小数点加两位小数长度<=n,截断小数,可转换;否则,报错。Varchar(n) -> money 非数值的varchar无法转换
Varchar -> datetime: 正常格式会被转换,无效字符则转换失败。
Datetime->varchar(n): 字段会被截断
Varchar(n) -> int 对应的数字大于int会溢出错误;非数字类型,转换失败。
Int ->varchar(n) int的长度>n 转换为’*’。
Transact-SQL 保留关键字
https:///zh-cn/library/ms189822
工作流关键字
默认列:config文件