SQL 计算列
SQL计算列,可以解决一般标量计算(数学计算,如ColumnA*ColumnB)的问题,而子查询计算(如select sum(salary) from tableOther where id=’ABC’)则没有相应的支持,可以使用触发器的方式来进行实时运算,但是需要增加维护成本。
在《数据库重构》一书中,这属于结构重构的内容。
以下应用内容来自网络,稍稍排版之后就搬家到这里了,感谢各位大神的贡献:
Eg1:身份证号的生日
表中有“身份证”字段 ,如何利用计算所得的列规范 根据“身份证”字段生成自动得出的“生日”字段。请给出相关代码
如
身份证 生日(自动得出并且数据类型为datetime)310501198408097619 1984-08-09
解决方法:
use tempdb
go
create table t1
(
身份证 varchar(18),
生日 as case LEN(身份证) when 18
then substring(身份证,7,4)+'-'+substring(身份证,11,2)+'-'+substring(身份证,13,2)
else ''+substring(身份证,7,2)+'-'+substring(身份证,9,2)+'-'+substring(身份证,11,2)
end
)
go
insert t1 select ''
go
select * from t1
go
/**
身份证 生日
----------------------------------
310501198408097619 1984-08-09
**/
drop table t1
go
在计算所得的列规范属性---公式中写:
是持久的 指示是否存储公式的计算结果。如果此属性设置为“否”,则只存储公式,每次引用此列时都会计算公式的值。
Eg2:日期差
比如说我现在有列A,列B,列A存储的是借书的时间,列B存储的是还书的时间,我希望有列C,C存储是B-A的天数,当向表中插入还书时间时,列C就会计算出借书的天数,请问应该如何实现。
解决方法:
其他参考:http://www.cnblogs.com/jinzhenshui/archive/2009/12/16/1625334.html
http://www.cnblogs.com/wyfs/archive/2012/03/09/2387712.html
感恩~
SQL 计算列的更多相关文章
- SQL Server-聚焦计算列持久化(二十一)
前言 上一节我们结束了Hash Match Aggregate和Stream Aggregate的讲解,本系列我们来讲讲关于SQL Server中的计算列问题,简短的内容,深入的理解,Always t ...
- SQL查询关于相对路径、矢代、绝对路径、递归、计算列的速度对比跟优化-SOD群记录
1秒查原本递归的查询. 适用于:上下级.多层查询 -- Get childs by parent id WITH Tree AS ( SELECT Id,ParentId FROM dbo.Node ...
- SQL Server计算列
计算列由可以使用同一表中的其他列的表达式计算得来.表达式可以是非计算列的列名.常量.函数,也可以是用一个或多个运算符连接的上述元素的任意组合.表达式不能为子查询. 例如,在 AdventureWork ...
- SQL Server ->> Computed Column(计算列)
Computed Column(计算列)是自SQL Server 2005开始就有的特性.计算列的定义是一个表达式.表达式可以是非计算列,常量,函数间的组合.但是不可以是子查询. 计算列数据固化 默认 ...
- SQL Server-聚焦计算列或计算列持久化查询性能(二十二)
前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...
- SQL Server 列存储索引强化
SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...
- SqlServer中计算列详解
计算列区别于需要我们手动或者程序给予赋值的列,它的值来源于该表中其它列的计算值.比如,一个表中包含有数量列Number与单价列Price,我们就可以创建计算列金额Amount来表示数量*单价的结果值, ...
- 【SqlServer】SqlServer中的计算列
计算列区别于需要我们手动或者程序给予赋值的列,它的值来源于该表中其它列的计算值.比如,一个表中包含有数量列Number与单价列Price,我们就可以创建计算列金额Amount来表示数量*单价的结果值, ...
- sqlserver创建计算列 转
转 http://www.cnblogs.com/lgx5/p/6017874.html 表中其它列的计算值 创建的sql create table table1 ( number decimal(1 ...
随机推荐
- 改变edittext边框颜色
转载自:点击打开链接 第一步:为了更好的比较,准备两个一模一样的EditText(当Activity启动时,焦点会在第一个EditText上,如果你不希望这样只需要写一个高度和宽带为0的EditTex ...
- [Effective JavaScript 笔记]第37条:认识到this变量的隐式绑定问题
CSVReader示例 需求 CSV(逗号分隔型取值)文件格式是一种表格数据的简单文本表示 张三,1982,北京,中国 小森,1982,东京,日本 吉姆,1958,纽约,美国 现需要编写一个简单的.可 ...
- invert
http://docs.ruby-lang.org/en/2.0.0/Hash.html invert → new_hash Returns a new hash created by using h ...
- ruby开发过程中的小总结
(1)建表的时候注意保留字 在新建的表里无法插入一列的值, 报错信息是:Can't mass-assign protected attributes,这一列的列名是type,查了一下发现是因为type ...
- 基于DCMTK的DICOM相关程序编写攻略
2008年09月10日 星期三 15:35 基于DCMTK的DICOM相关程序编写攻略 前言: 由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢,在我们进行医学图像处理的过程中,经常 ...
- poj1753枚举
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33670 Accepted: 14713 Descr ...
- Linux 磁盘的组成
基本结构 磁道,扇区,柱面和磁头数 硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等.每个盘片有两面,都可记录信息. 每个磁道被分成许多扇形的区域,每个区域叫一个 ...
- HTML前端
1.<html>内容</html> 解释:HTML文档的文档标记,也成为HTML开始标记 功能:这对标记分别位于网页的最前端和最后端 <html>在最前段表示网页的 ...
- codeforces A. Puzzles 解题报告
题目链接:http://codeforces.com/problemset/problem/337/A 题意:有n个学生,m块puzzles,选出n块puzzles,但是需要满足这n块puzzles里 ...
- js将map转成数组
//根据资源的ID去查找 this.classArray = []; for(var c in this.comboData.classId){ this.classArray.push({ text ...