SELECT id,
CASE WHEN id=1 THEN firstname ELSE user END 'username'
FROM tb1
如果是查询条件要用这个就套一个
SELECT *
FROM tb1 a
WHERE username=(SELECT CASE WHEN id=1 THEN firstname ELSE user END
WHERE id=a.id);
下面我们看一张表:想一想在数据库SQLServer中我们如何能更简便的向这张表格中添加数据呢?
仔细观察此表我们不难发现,ID字段的这列数据的添充是有规律可循的,它是一个等比自增的数列,向数据表中添加这样的数据有没有简单的方法呢?
这就谈到了SQLServer标识列的问题.我查询一些资料做了总结,在此和大家一起分享受与交流.
(1)标识列的定义
标识列,(通常也称为"标识字段"或者称为"自动增长字段")是一行记录区别其它记录的标识,为的也是能唯一地检索出该行记录.
注意:一个表中只能有一个标识列(标识字段),一般是把"主键"设为标识列.
从上图中"标识规范"中看到,标识列中还有个"标识种子"和"标识增量",主要是为了避免重复值的出现,便于查询.
标识种子
是开始的数是多少,默认为1.
标识增量(也称为增长种子)是每增加一条数据增加的值是多少,默认为1.
标识列不容许插入值,是自动给值的,强制给会报错.
identity(1,1)
那么该列标识种子是1,增长种子也是1.第一个参数是标实种子,第二个参数是增长种子.
注意:在设置标识列之前,要在—'工具'菜单中找到—'选项'—在选项中—把'阻止保存要求重新建表的更改'的"√"去掉,否则SQLServer要修改表的标识列没法修改.
也就是说:标识列实现了字段自增,解决的是并发的问题,不用开发人员控制自增,SQLServer会自动分配标识列的值,如果两个人同时往数据库里面插数据时,将会产生唯一的自动增加为标识.
利用sql语句来查询列信息,就是要用到系统视图sys.columns,这个视图记录了数据库中所有表,视图,表值函数等的所有列信息.我们可以利用语句select * from sys.columns来查看这个视图返回的信息.
sys.columns返回的列比较多,大部分情况下很多列的信息我们可能用不到,下面我们只解释一下比较常用的列的信息.
①.,object_id--这个列是比较重要的,它是返回当前列所属表的ID.利用它,我们就可以查询指定表的所有列信息,比如下面的sql语句是查询表table1的所有列信息.
select * from sys.columns where object_id=object_id('table1')
system_type_id,max_length,precision,scale四列结合系统视图sys.types一起我们来举个示例.
如果我们要查询表table1的所有列,及列的类型,列的精度,列的小数位数,sql语句如下:
select a.name,b.name,a.max_length,a.precision,a.scale
from sys.columns a left join sys.types b on a.user_type_id=b.user_type_id
where a.object_id=object_id('table1')
①.0,is_computed--该列是否是计算列.利用该列,我们也就可以查询某个表的所有计算列了,比如我们要查询表table1中的所有计算列,sql语句如下:
select * from sys.columns where object_id=object_id('table1') and is_computed=1
以上就是土嘎嘎小编为大家整理的sqlserver识别列相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!