sqlserver识别列,sql标识列是什么

sqlserver 如何根据条件选择要检索的列 case when

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

FROM tb1

WHERE id=a.id);

Sqlserver的标识列问题

下面我们看一张表:想一想在数据库SQLServer中我们如何能更简便的向这张表格中添加数据呢?

仔细观察此表我们不难发现,ID字段的这列数据的添充是有规律可循的,它是一个等比自增的数列,向数据表中添加这样的数据有没有简单的方法呢?

这就谈到了SQLServer标识列的问题。我查询一些资料做了总结,在此和大家一起分享受与交流。

(1)标识列的定义

标识列,(通常也称为“标识字段”或者称为“自动增长字段”)是一行记录区别其它记录的标识,为的也是能唯一地检索出该行记录。

注意:一个表中只能有一个标识列(标识字段),一般是把“主键”设为标识列。

(2)如何把一个字段设为标识列?

下面我以SQLServer2008为例来看一下它的设置步骤:

如:右键单击——表Person3,左键单击——“设计”属性,然后选中要设为标识列的字段,在“标识规范”中,将字段的“是标识”设为“是”,最后关闭此窗口,保存即可。

从上图中“标识规范”中看到,标识列中还有个“标识种子”和“标识增量”,主要是为了避免重复值的出现,便于查询。

1.

标识种子

是开始的数是多少,默认为1。

2.

标识增量(也称为增长种子)是每增加一条数据增加的值是多少,默认为1。

3.

标识列不容许插入值,是自动给值的,强制给会报错。

identity(1,1)

那么该列标识种子是1,增长种子也是1。第一个参数是标实种子,第二个参数是增长种子。

注意:在设置标识列之前,要在—‘工具’菜单中找到—‘选项’—在选项中—把‘阻止保存要求重新建表的更改’的“√”去掉,否则SQLServer要修改表的标识列没法修改。

(3)设置标识列的好处

标识列是自动增长的,从种子开始,依次递增,递增量位自己设置的。比如:种子是1,增长量为1,那么标识列的值是:1、2、3、4、5……依次类推。所以你写Insert语句的时候,不用写标识列的值。

也就是说:标识列实现了字段自增,解决的是并发的问题,不用开发人员控制自增,SQLServer会自动分配标识列的值,如果两个人同时往数据库里面插数据时,将会产生唯一的自动增加为标识.

如何在sqlserver中获取表的所有列信息

microsoft sql server management studio中展开对应表下面的列信息不就可以看到列的详细信息了么?当然这是可以的,但这里我们主要讲的时如何利用sql语句来查询指定表的列信息。

利用sql语句来查询列信息,就是要用到系统视图sys.columns,这个视图记录了数据库中所有表,视图,表值函数等的所有列信息。我们可以利用语句select * from sys.columns来查看这个视图返回的信息。

sys.columns返回的列比较多,大部分情况下很多列的信息我们可能用不到,下面我们只解释一下比较常用的列的信息。

1,object_id--这个列是比较重要的,它是返回当前列所属表的ID。利用它,我们就可以查询指定表的所有列信息,比如下面的sql语句是查询表table1的所有列信息。

select * from sys.columns where object_id=object_id('table1')

2,name--该列的列名。

3,column_id--该列在数据库中的ID,注意,数据库中任何对象的ID都是唯一的。

4,system_type_id--该列的类型的ID,和下面max_length,precision,scale三列一起可以来举个示例。

5,max_length--该列的最大长度

6,precisionp--如果这列是数值列,那么这是该列的精度,否则就是0

7,scale--如果这列是数值列,那么这就是列的小数位数,否则就是0

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')

8,is_nullable--该列是否可以为null

9,is_identity--该列是否是标识列

10,is_computed--该列是否是计算列。利用该列,我们也就可以查询某个表的所有计算列了,比如我们要查询表table1中的所有计算列,sql语句如下:

select * from sys.columns where object_id=object_id('table1') and is_computed=1

sys.columns视图中常用的列就是这10列了,其它列的信息大家可以到SQLServer 2005联机丛书中查询。


新闻名称:sqlserver识别列,sql标识列是什么
新闻来源:http://hbruida.cn/article/hcieeh.html