数字

int、bigint、smallint 和 tinyint

使用整数数据的精确数字数据类型。

数据类型 范围 存储
tinyint 0 到 255。 1 字节
smallint -2^15 (-32,768) 到 2^15-1 (32,767)。 2 字节
int -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)。 4 字节
bigint -2^63 (-9,223,372,036,854,775,808) 到 2^63-1。 (9,223,372,036,854,775,807) 8 字节

decimal [ (p[ ,s] )] 和 numeric[ (p[ ,s] )]

带固定精度和小数位数的数值数据类型。 decimal 和 numeric 是同义词,可互换使用。

固定精度和小数位数。 使用最大精度时,有效值的范围为 - 10^38 +1 到 10^38 - 1。 decimal 的 ISO 同义词为 dec 和 dec(p、s)。numeric 在功能上等价于 decimal。

p(精度)

最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。 该精度必须是从 1 到最大精度 38 之间的值。 默认精度为 18。

s (小数位数)

小数点右边可以存储的十进制数字的位数。 从 p 中减去此数字可确定小数点左边的最大位数。 小数点右边可以存储的十进制数字的最大位数。 小数位数必须是从 0 到 p 之间的值。 仅在指定精度后才可以指定小数位数。 默认的小数位数为 0;因此,0 <= s <= p。 最大存储大小基于精度而变化。

精度(p)

存储字节数

1 - 9

5

10-19

9

20-28

13

29-38

17

money 和 smallmoney

money 和 smallmoney 数据类型精确到它们所代表的货币单位的万分之一。

数据类型

范围

存储

money

-922,337,203,685,477.5808 到 922,337,203,685,477.5807。

8 字节

smallmoney

-214,748.3648 到 214,748.3647。

4 字节

bit

可以取值为 1、0 或 NULL 的 integer 数据类型。

SQL Server 数据库引擎可优化 bit 列的存储。 如果表中的列为 8 bit 或更少,则这些列作为 1 个字节存储。 如果列为 9 到 16 bit,则这些列作为 2 个字节存储,以此类推。

字符串值 TRUE 和 FALSE 可转换为 bit 值:TRUE 将转换为 1,FALSE 将转换为 0。

转换为 bit 会将任何非零值升为 1。

float 和 real

用于表示浮点数值数据的大致数值数据类型。 浮点数据为近似值;因此,并非数据类型范围内的所有值都能精确地表示。 real 的 ISO 同义词为 float(24)。

float [ (n) ] 其中 n 为用于存储 float 数值尾数的位数(以科学记数法表示),因此可以确定精度和存储大小* 如果指定了 n,则它必须是介于 1 和 53 之间的某个值。 n 的默认值为 53。

n值

精度

存储大小

1-24

7 位数

4 字节

25-53

15 位数

8 字节

数据类型

范围

存储

float

-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308

取决于 n 的值

real

-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38

4 字节

日期时间

类型 默认的字符串文字格式 日期范围 时间范围 时区偏移量范围 各元素的范围 字符长度 存储大小 精确度 默认值 日历 用户定义的秒的小数部分精度 时区偏移量感知和保留 夏时制感知
date YYYY-MM-DD 0001-01-01 到 9999-12-31(对于 Informatica,为 1582-10-15 到 9999-12-31)

公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日(对于 Informatica,为公元 1582 年 10 月 15 日到公元 9999 年 12 月 31 日)

    YYYY 是表示年份的四位数字,范围为从 0001 到 9999。 对于 Informatica,YYYY 限为 1582 年到 9999 年。

MM 是表示指定年份中的月份的两位数字,范围为从 01 到 12。

DD 是表示指定月份中的某一天的两位数字,范围为从 01 到 31(最高值取决于具体月份)。

10 位 固定 3 个字节 一天 1900-01-01

此值用于从 time 隐式转换到 datetime2 或 datetimeoffset 时追加的日期部分。

公历
datetime 默认的字符串文字格式不适用 1753 年 1 月 1 日到 9999 年 12 月 31 日 00:00:00 到 23:59:59.997 None YYYY 是表示年份的四位数字,范围为 1753 到 9999。

MM 是表示指定年份中的月份的两位数字,范围为 01 到 12。

DD 是表示指定月份中的某一天的两位数字,范围为 01 到 31(最高值取决于相应月份)。

hh 是表示小时的两位数字,范围为 00 到 23。

mm 是表示分钟的两位数字,范围为 00 到 59。

ss 是表示秒钟的两位数字,范围为 00 到 59。

n* 为一个 0 到 3 位的数字,范围为 0 到 999,表示秒的小数部分。

最低 19 位到最高 23 位 8 字节 舍入到 .000、.003 或 .007 秒三个增量。 1900-01-01 00:00:00 公历(不包括完整的年份范围。)
datetime2 [ (fractional seconds precision) ] YYYY-MM-DD hh:mm:ss[.fractional seconds] 0001-01-01 到 31.12.99

公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日

00:00:00 到 23:59:59.9999999 None YYYY 是一个四位数,范围从 0001 到 9999,表示年份。

MM 是一个两位数,范围从 01 到 12,它表示指定年份中的月份。

DD 是一个两位数,范围为 01 到 31(具体取决于月份),它表示指定月份中的某一天。

hh 是一个两位数,范围从 00 到 23,它表示小时。

mm 是一个两位数,范围从 00 到 59,它表示分钟。

ss 是一个两位数,范围从 00 到 59,它表示秒钟。

n* 代表 0 到 7 位数字,范围从 0 到 9999999,它表示秒小数部分。 在 Informatica 中,当 n > 3 时,秒的小数部分会被截断。

最低 19 位 (YYYY-MM-DD hh:mm:ss ),最高 27 位 (YYYY-MM-DD hh:mm:ss.0000000) 精度小于 3 时为 6 个字节;精度为 3 和 4 时为 7 个字节。 所有其他精度则需要 8 个字节。 100 纳秒 1900-01-01 00:00:00 公历 用户帐户控制
datetimeoffset [ (fractional seconds precision) ] YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] 0001-01-01 到 31.12.99

公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日

00:00:00 至 23:59:59.9999999(Informatica 不支持秒的小数部分) -14:00 到 +14:00(Informatica 中忽略时区偏移量) YYYY 是表示年份的四位数字,范围为 0001 到 9999。

MM 是表示指定年份中的月份的两位数字,范围为 01 到 12。

DD 是表示指定月份中的某一天的两位数字,范围为 01 到 31(最高值取决于相应月份)。

hh 是表示小时的两位数字,范围为 00 到 23。

mm 是表示分钟的两位数字,范围为 00 到 59。

ss 是表示秒钟的两位数字,范围为 00 到 59。

n* 是 0 到 7 位数字,范围为 0 到 9999999,它表示秒的小数部分。 Informatica 不支持秒的小数部分。

hh 是两位数,范围为 -14 到 +14。 Informatica 忽略时区偏移量。

mm 是两位数,范围为 00 到 59。 Informatica 忽略时区偏移量。

最低 26 位 (YYYY-MM-DD hh:mm:ss {+ 默认值为 10 个字节的固定大小,默认的秒的小数部分精度为 100ns。 100 纳秒

1900-01-01 00:00:00 00:00

公历 用户帐户控制 用户帐户控制
smalldatetime 不适用 1900-01-01 到 2079-06-06

1900 年 1 月 1 日到 2079 年 6 月 6 日

00:00:00 到 23:59:59

2007-05-09 23:59:59 将舍入为

2007-05-10 00:00:00

  YYYY 是表示年份的四位数字,范围为 1900 到 2079。

MM 是表示指定年份中的月份的两位数字,范围为 01 到 12。

DD 是表示指定月份中的某一天的两位数字,范围为 01 到 31(最高值取决于相应月份)。

hh 是表示小时的两位数字,范围为 00 到 23。

mm 是表示分钟的两位数字,范围为 00 到 59。

ss 是表示秒钟的两位数字,范围为 00 到 59。 小于或等于 29.998 秒的值向下舍入为最接近的分钟数;大于或等于 29.999 秒的值向上舍入为最接近的分钟数。

最高 19 位 固定 4 个字节 一分钟 1900-01-01 00:00:00 公历

(不包括完整的年份范围。)

time [ (fractional second scale) ] 对于 Informatica,为 hh:mm:ss[.nnnnnnn])   00:00:00.0000000 到 23:59:59.9999999(对于 Informatica,为 00:00:00.000 到 23:59:59.999)   hh 是表示小时的两位数字,范围为 0 到 23。

mm 是表示分钟的两位数字,范围为 0 到 59。

ss 是表示秒的两位数字,范围为 0 到 59。

n* 是 0 到 7 位数字,范围为 0 到 9999999,它表示秒的小数部分。 对于 Informatica,n* 是零到三位数字,范围为 0 到 999。

最小 8 位 (hh:mm:ss),最大 16 位 (hh:mm:ss.nnnnnnn)。 对于 Informatica,最大值为 12 位 (hh:mm:ss.nnn)。 固定 5 个字节,是使用默认的 100ns 秒的小数部分精度时的默认存储大小。 在 Informatica 中,默认为 4 个字节,固定不变,同时秒的小数部分精度默认为 1 毫秒。 100 纳秒(Informatica 中为 1 毫秒) 00:00:00

此值用作从 date 隐式转换到datetime2 或 datetimeoffset 时追加的时间部分。

  用户帐户控制

cursor

有些操作可以引用那些具有 cursor 数据类型的变量和参数,这些操作包括:

  • DECLARE @local_variable 和 SET @local_variable 语句。
  • OPEN、FETCH、CLOSE 及 DEALLOCATE 游标语句。
  • 存储过程输出参数。
  • CURSOR_STATUS 函数。
  • sp_cursor_list、sp_describe_cursor、sp_describe_cursor_tables 以及 sp_describe_cursor_columns 系统存储过程。

sp_cursor_list 和 sp_describe_cursor 的 cursor_name 输出列返回游标变量的名称。使用 cursor 数据类型创建的所有变量都可以为 Null。对于 CREATE TABLE 语句中的列,不能使用 cursor 数据类型。

rowversion

公开数据库中自动生成的唯一二进制数字的数据类型。 rowversion 通常用作给表行加版本戳的机制。 存储大小为 8 个字节。 rowversion 数据类型只是递增的数字,不保留日期或时间。 若要记录日期或时间,请使用 datetime2 数据类型。

每个数据库都有一个计数器,当对数据库中包含 rowversion 列的表执行插入或更新操作时,该计数器值就会增加。此计数器是数据库行版本。 这可以跟踪数据库内的相对时间,而不是时钟相关联的实际时间。 一个表只能有一个 rowversion 列。 每次修改或插入包含 rowversion 列的行时,就会在 rowversion 列中插入经过增量的数据库 rowversion 值。 这一属性使 rowversion 列不适合作为键使用,尤其是不能作为主键使用。 对行的任何更新都会更改行版本值,从而更改键值。 如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。 如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。 如果该列属于索引键,则对数据行的所有更新还将导致索引更新。 使用任何更新语句都会让 rowversion 值递增,即使没有任何行值发生更改。 (例如,如果某列的值为 5,且更新语句将该值设置为 5,即使没有发生任何更改,此操作也被视为更新,并且 rowversion 发生递增。)

timestamp 的数据类型为 rowversion 数据类型的同义词,并具有数据类型同义词的行为。 在 DDL 语句中,应尽量使用 rowversion,而不是 timestamp。

binary 和 varbinary

数据类型 定义 取值范围 储存大小 ISO 何时使用...
binary [ ( n ) ]  长度为 n 字节的固定长度二进制数据。 n 是从 1 到 8,000 的值。  存储大小为 n 字节。   列数据项的大小一致。
varbinary [ ( n | max) ]  可变长度二进制数据。

n 的取值范围为 1 至 8,000。

max 指示最大存储大小是 2^31-1 个字节。

存储大小为所输入数据的实际长度 + 2 个字节。

所输入数据的长度可以是 0 字节。

 

[n]列数据项的大小差异相当大。

[max]列数据条目超出 8,000 字节。

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  
nchar [ ( n ) ] 固定长度的 Unicode 字符串数据。 n 用于定义字符串长度,并且它必须为 1 到 4,000 之间的值。

存储大小为 n 字节的两倍。

当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。 根据字符串的不同,n 个字节的存储大小可能小于为 n 指定的值。

 nchar 的 ISO 同义词是 national char 和 national character  
nvarchar [ ( n | max ) ] 可变长度的 Unicode 字符串数据。 n 用于定义字符串长度,并且它可以为 1 到 4,000 之间的值。 max 指示最大存储大小是 2^30-1 个字符。 以字节为单位的最大存储大小为 2 GB。 实际存储大小(以字节为单位)是所输入字符个数的两倍 + 2 个字节。 nvarchar 的 ISO 同义词是 national char varying 和 national character varying。  
ntext 长度可变的 Unicode 数据,字符串最大长度为 2^30 - 1 (1,073,741,823) 个字节。    存储大小是所输入字符串长度的两倍(以字节为单位)。  ntext 的 ISO 同义词为 national text。  
text 服务器代码页中长度可变的非 Unicode 数据,字符串最大长度为 2^31-1 (2,147,483,647) 个字节。   当服务器代码页使用双字节字符时,存储仍是 2,147,483,647 字节。 根据字符串,存储大小可能小于 2,147,483,647 字节。    
image 长度可变的二进制数据。   从 0 到 2^31-1 (2,147,483,647) 个字节。    

空间类型 - geography

地理空间数据类型 geography 是作为 SQL Server 中的 .NET 公共语言运行时 (CLR) 数据类型实现的。 此类型表示圆形地球坐标系中的数据。 SQL Server geography 数据类型存储诸如 GPS 纬度和经度坐标之类的椭球体(圆形地球)数据。

SQL Server 支持 geography 空间数据类型的一组方法。 这些方法包括开放地理空间信息联盟 (OGC) 标准和对该标准的一组 Microsoft 扩展所定义的 geography 方法。

geography 方法的容错可高达 1.0e-7 * extents。 extents 表示 geography 对象的各点之间的近似最大距离。

geography 类型已进行预定义,可在每个数据库中使用。 你可以创建 geography 类型的表列并对 geography 数据进行操作,就像使用其他系统提供的数据类型一样。 可以用在持久化和非持久化计算列中。

sql_variant

sql_variant 可以用在列、参数、变量和用户定义函数的返回值中。 借助 sql_variant,这些数据库对象可以支持其他数据类型的值。

类型为 sql_variant 的列可能包含不同数据类型的行。 例如,定义为 sql_variant 的列可以存储 int、binary 和 char 类型的值。

sql_variant 的最大长度可以是 8016 个字节。 这包括基类型信息和基类型值。 实际基类型值的最大长度是 8,000 个字节。

对于 sql_variant 数据类型,必须先将它转换为其基本数据类型值,然后才能参与诸如加减这类运算。

可以为 sql_variant 分配默认值。 该数据类型还可以将 NULL 作为其基础值,但是 NULL 值没有关联的基类型。 此外,sql_variant 不能使用其他 sql_variant 作为其基础类型。

唯一键、主键或外键可能包含类型为 sql_variant 的列,但是,组成指定行的键的数据值的总长度不应大于索引的最大长度。 该最大长度是 900 个字节。

一个表可以包含任意多个 sql_variant 列。

不能在 CONTAINSTABLE 和 FREETEXTTABLE 中使用 sql_variant。

ODBC 不完全支持 sql_variant。 因此,使用 Microsoft OLE DB Provider for ODBC (MSDASQL) 时,sql_variant 列的查询将作为二进制数据返回。 例如,包含字符串数据 'PS2091' 的 sql_variant 列将作为 0x505332303931 返回。

一种特殊的数据类型,可用于存储结果集以进行后续处理。 table 主要用于临时存储一组作为表值函数的结果集返回的行。 可将函数和变量声明为 table 类型。 table 变量可用于函数、存储过程和批处理中。

uniqueidentifier

存储空间为16 字节 GUID。

uniqueidentifier数据类型的列或局部变量可通过以下方式初始化为一个值:

  • 通过使用 NEWID 或 NEWSEQUENTIALID 函数。
  • 通过从 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式的字符串常量进行转换,其中,每个 x 都是 0-9 或 a-f 范围内的十六进制数字。 例如,6F9619FF-8B86-D011-B42D-00C04FC964FF 为有效的 uniqueidentifier 值。

比较运算符可与 uniqueidentifier 值一起使用。 不过,排序不是通过比较两个值的位模式来实现的。 可针对 uniqueidentifier 值执行的运算只有比较运算(=、<>、<、>、<=、>=)以及检查是否为 NULL(IS NULL 和 IS NOT NULL)。 不能使用其他算术运算符。 除 IDENTITY 之外的所有列约束和属性均可对 uniqueidentifier 数据类型使用。

具有更新订阅的合并复制和事务复制使用 uniqueidentifier 列来确保在表的多个副本中唯一地标识行。

XML

存储 XML 数据的数据类型。 可在列中或者 xml 类型的变量中存储 xml 实例。

存储的 xml 数据类型表示实例大小不能超过 2 GB。

CONTENT 和 DOCUMENT 方面仅应用于类型化的 XML.

CONTENT
将 xml 实例限制为格式正确的 XML 片段。 XML 数据的顶层可包含多个零或多个元素。 还允许在顶层使用文本节点。这是默认行为。

DOCUMENT
将 xml 实例限制为格式正确的 XML 片段。 XML 数据必须且只能有一个根元素。 不允许在顶层使用文本节点。

xml_schema_collection
XML 架构集合的名称。 若要创建类型化的 xml 列或变量,可选择指定 XML 架构集合名称。

SQLServer之数据类型解析的更多相关文章

  1. 《ServerSuperIO Designer IDE使用教程》-3.Modbus协议,读取多个寄存器,实现多种数据类型解析。发布:v4.2.2版本

    更新内容,v4.2.2版本:1.增加Modbus协议读取多个寄存器,并且按多种数据类型解析数据.2.Modbus Serial和Modbus TCP两个驱动合并成一个驱动.3.修改数据库结构,保存配置 ...

  2. mssql sqlserver text数据类型专题说明

    摘要: 下文分享text数据类型的简介及处理text数据类型所涉及的函数,如下所示: text 数据类型简介: mssql sqlserver 常用数据类型简介 mssql sqlserver tex ...

  3. mssql sqlserver xml数据类型专题

    摘要: 下文将详细讲述sql server xml数据类型的相关知识,如下所示: 实验环境: sql server 2008 R2 xml数据类型简介: mssql sqlserver xml数据类型 ...

  4. [Oracle] Oracle和SQLServer的数据类型比较

    类型名称 Oracle SQLServer 比较 字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb 变长字符数据类型 VA ...

  5. java的五种数据类型解析

    不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...

  6. SQLServer之数据类型

    1.整数数据类型整数数据类型是常用的数据类型之一,主要用于存储数值,可以直接进行数据运算而不必使用函数转换.(1).bigint 每个bigint存储在8个字节中,其中一个二进制位表示符号位,其它63 ...

  7. SQLServer的数据类型

    第一大类:整数数据 bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.smallint: ...

  8. 《Play for Java》学习笔记(七)数据类型解析——Body parser

    一.什么是body parser? body parser(不知道具体如何翻译,~~~~(>_<)~~~~ )指一个HTTP请求 (如POST和PUT操作)所包含的文本内容(body),这 ...

  9. sqlserver常用数据类型(精炼版)

    一:系统数据类型 2.浮点数据类型 3.字符数据类型 4.日期和时间数据类型 5.文本和图形数据类型 6.货币数据类型 7.位数据类型 8.二进制数据类型 9.其他数据类型 二:自定义数据类型   数 ...

随机推荐

  1. Nginx 优化静态文件访问

    简介 Web 开发中需要的静态文件有:CSS.JS.字体.图片,可以通过web框架进行访问,但是效率不是最优的. Nginx 对于处理静态文件的效率要远高于 Web 框架,因为可以使用 gzip 压缩 ...

  2. 产品研发团队如何融合OKR与Scrum敏捷开发?

    「 OKR 」现在非常的火爆,很多公司都在使用,不仅国外的 Google.英特尔等大公司在用,国内的一线知名互联网企业今日头条和一些创业团队也都在使用. 那为什么「 OKR 」这么受欢迎呢,因为把它可 ...

  3. 前端笔记之JavaScript(十)深入JavaScript节点&DOM&事件

    一.DOM JavaScript语言核心.变量的定义.变量的类型.运算符.表达式.函数.if语句.for循环.算法等等.这些东西都属于语言核心,下次继续学习语言核心就是面向对象了.JavaScript ...

  4. JdbcTemplate的一次爬坑记录

    时隔三个多月,我终于想起我还有个博客,其实也不是忘了我这个博客,只是平时工作繁忙没时间去写博客,故今晚腾出时间来记录一下上次工作中遇到的一个问题,给园友们分享出来,以免入坑. 上个星期在工作中使用Jd ...

  5. SQLServer特殊字符/生僻字与varchar

    对于中文版的SQL SERVER,默认安装后使用的默认排序规则为Chinese_PRC_CI_AS,在此排序规则下,使用varchar类型来可以“正常存取”存放中文字符以及一些东南亚国家的字符,同时v ...

  6. JDK源码分析(7)之 Reference 框架概览

    对于Reference类大家可能会比较陌生,平时用的也比较少,对他的印象可能仅停在面试的时候查看引用相关的知识点:但在仔细查看源码后发现Reference还是非常实用的,平时我们使用的类都是强引用的, ...

  7. [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

    函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type use ...

  8. Docker网络(五)--技术流ken

    本章内容 1.dokcer默认自带的几种网络介绍 2. 自定义网络 3. 容器间通信 4. 容器与外界交互 docker网络分为单个主机上的容器网络和多个主机上的哇网络,本文主要讲解单个主机上的容器网 ...

  9. 第22章 使用外部身份提供商登录 - Identity Server 4 中文文档(v1.0.0)

    ASP.NET Core有一种灵活的方式来处理外部身份验证.这涉及几个步骤. 注意 如果您使用的是ASP.NET Identity,则会隐藏许多基础技术细节.建议您还阅读Microsoft 文档并执行 ...

  10. js中json的添加和指定位置的删除

    0]绑定数据 grid = $("#Grid").datagrid({ fit: true, rownumbers: true, fitColumns: true, height: ...