特殊的数据类型: bit、sql_variant、sysname
在SQL Server中,特殊的数据类型主要有三个,分别是:bit、sql_variant 和 sysname
一,bit
bit类型,只有三个有效值:0,1 和 null,字符串true或false能够隐式转换为bit类型,true转换为1,false转换为0;任何非0的整数值转换成bit类型时,值都是1。
1,将字符串 true 和 false 隐式转换成 bit 类型
declare @bit_true bit
declare @bit_false bit
set @bit_true='true'
set @bit_false='false'
select @bit_true,@bit_false
2,存储空间
bit类型存储 0 和 1 ,只需要使用 1 bit 就能表示,但是,在存储到Disk时,SQL Server按照Byte来分配存储空间。如果表中只有1个 bit 列,那么该列将会占用1Byte的空间,一个Byte最多存储8个bit列。
The SQL Server Database Engine optimizes storage of bit columns. If there are 8 or less bit columns in a table, the columns are stored as 1 byte. If there are from 9 up to 16 bit columns, the columns are stored as 2 bytes, and so on.
二,sql_variant
1,存储空间
sql_variant 是变长的数据类型,包含两部分信息:基础类型和Value,最多存储8000Byte的数据。
sql_variant includes both the base type information and the base type value. The maximum length of the actual base type value is 8,000 bytes.
declare @sv sql_variant
set @sv=REPLICATE('abcd',2001)
--max bytes:8000
select len(cast(@sv as varchar(max)))
2,赋值和运算
在赋值时,SQL Server 自动将其他数据类型隐式转换为sql_variant类型,但是,SQL Server不支持将sql_variant类型隐式转换成其他数据类型,必须显式转换。不能直接对sql_variant进行运算,例如,在对sql_variant 类型进行算术/字符操作时,必须显式将其转换成基础数据类型,然后才能对其进行运算。
When handling the sql_variant data type, SQL Server supports implicit conversions of objects with other data types to the sql_variant type. However, SQL Server does not support implicit conversions from sql_variant data to an object with another data type.
declare @var_int sql_variant
declare @var_bit sql_variant set @var_bit='true'
set @var_int=10 select @var_bit,@var_int,cast(@var_bit as bit),cast(@var_int as int)
三,sysname
sysname 是一个系统数据类型,用于定义表列、变量以及存储过程的参数,是nvarchar(128) 的同义词,当该类型用于定义table column时,SQL Server 会自动添加 not null ,等价于nvarchar(128) not null。
查看sysname的定义
exec sp_help sysname
- 使用sysname定义变量或参数时,等价于 nvarchar(128)
- 使用sysname定义column的类型时,等价于 nvarchar(128) not null
当使用sysname定义column的类型时,SQL Server 自动在sysname 后面加上not null,即 sysname not null,等价于 nvarchar(128) not null
create table dbo.dt
(
col sysname
)
--系统生成的create table 脚本
CREATE TABLE [dbo].[dt]
(
[col] [sysname] NOT NULL
)
参考文档:
特殊的数据类型: bit、sql_variant、sysname的更多相关文章
- mssql sqlserver 数据类型sql_variant简介说明
转自: http://www.maomao365.com/?p=9712 摘要: 下文讲述sqlserver中sql_variant数据类型定义.赋值.应用的相关说明,如下所示: 实验环境:sql ...
- SQL数据类型
1.Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多8,000个字符. n varchar(n) 可变长度的字符串.最多8,000个字符. varchar ...
- SqlServer数据类型
Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符. n varchar(n) 可变长度的字符串.最多 8,000 个字符. varch ...
- 【转】SQL Server sql_variant 类型的比较
sql_variant 类型用于存储SQL SERVER中支持的各种数据类型. 为了进行 sql_variant 比较,SQL Server 数据类型层次结构顺序划分为多个数据类型系,sql_vari ...
- SQL的数据类型
Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符. N的范围1-8000 varchar(n) 可变长度的字符串.最多 8,000 个字符 ...
- SQL整理1 数据类型
Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符. N的范围1-8000 varchar(n) 可变长度的字符串.最多 8,000 个字符 ...
- SQL 数据类型
Microsoft Access.MySQL 以及 SQL Server 所使用的数据类型和范围. Microsoft Access 数据类型 数据类型 描述 存储 Text 用于文本或文本与数字的组 ...
- 03_SQL server数据类型
SQL server数据类型 String类型: 数据类型: 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符.定义类型为char(5),那么就表示该类型可以存储5个字符,即使存 ...
- SQL 用于各种数据库的数据类型(转载) sqlserver 数据类型 取值范围 长度
SQL 用于各种数据库的数据类型 来源 http://www.runoob.com/sql/sql-datatypes.html 面向数据库编程中,数据类型的取值范围.长度,可能是需要经常查看的 ...
- MySQL 、SQL MS Access、和 SQL Server 数据类型
MySQL 数据类型 在 MySQL 中,有三种主要的类型:Text(文本).Number(数字)和 Date/Time(日期/时间)类型. Text 类型: 数据类型 描述 CHAR(size) 保 ...
随机推荐
- [APUE]进程控制(上)
一.进程标识 进程ID 0是调度进程,常常被称为交换进程(swapper).该进程并不执行任何磁盘上的程序--它是内核的一部分,因此也被称为系统进程.进程ID 1是init进程,在自举(bootstr ...
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...
- 线性数据结构之栈——Stack
Linear data structures linear structures can be thought of as having two ends, whose items are order ...
- HTML 事件(三) 事件流与事件委托
本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...
- VB.NET设置控件和窗体的显示级别
前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...
- 微信小程序体验(1):携程酒店机票火车票
在 12 月 28 日微信公开课上,张小龙对微信小程序的形态进行了阐释,小程序有四个特定:无需安装.触手可及.用完即走.无需卸载. 由于携程这种订酒店.火车票和机票等工具性质非常强的服务,非常符合张小 ...
- Mysql - 数据库操作
之前介绍了数据库的增删改查, 发现忘记了数据库的一些基本操作, 比如建库, 建表, 改表等等. 那这里就来小结一下数据库sql形式的基本操作. 一.库操作 1. 建库 在建库之前, 可能需要看一下, ...
- 将MPM雪模拟移植到Maya
同事实现了一个迪士尼的MPM雪模拟论文,我将其移植到Maya中 论文题目是 A material point method for snow simulation 代码在这里: https://git ...
- 机器指令翻译成 JavaScript —— No.2 跳转处理
上一篇,我们发现大多数 6502 指令都可以直接 1:1 翻译成 JS 代码,但除了「跳转指令」. 跳转指令,分无条件跳转.条件跳转.从另一个角度,也可分: 静态跳转:目标地址已知 动态跳转:目标地址 ...
- CYQ.Data V5 分布式自动化缓存设计介绍
前方: 其实完成这个功能之前,我就在思考:是先把想法写了来,和大伙讨论讨论后再实现,还是实现后再写文论述自己的思维. 忽然脑后传来一个声音说:你发文后会进入发呆阶段. 所以还是静下心,让我轻轻地把代码 ...