您好,欢迎访问一九零五行业门户网

sqlserver不太常见的,可能常见但又疑问的tsql语句

2013年10月29日16:01:58 当数据有 time类型列时候,比如 打电话的通话时长,我们查询时候不方便,我们可以添加一个冗余列,直接统计秒 ,但是 后期知道的,现在我把例如 00:12:23 的时间换成秒 例如列 bridgeduration是时长,我们换成秒,存到这里bridgedura
2013年10月29日16:01:58
当数据有 time类型列时候,比如 打电话的通话时长,我们查询时候不方便,我们可以添加一个冗余列,直接统计秒 ,但是 后期知道的,现在我把例如 00:12:23  的时间换成秒
例如列  bridgeduration是时长,我们换成秒,存到这里bridgedurationint
update dbo.phonerecords set bridgedurationint=(cast(left(bridgeduration,2) as int)*3600)+(cast(right(left(bridgeduration,5),2) as int)*60)+cast(right(left(bridgeduration,8),2)  as int)
2013年9月24日16:47:55
跨服务器查询,需要先添加服务器链接
下面的ip地址可以换掉
exec sp_droplinkedsrvlogin '192.168.10.150',null
exec sp_dropserver '192.168.10.150'
exec sp_addlinkedserver '192.168.10.150', ' ', 'sqloledb', 10.50.1790.0
exec sp_addlinkedsrvlogin '192.168.10.150', 'false',null, 'it', 'its123'
2013年9月16日9:58:40 增加
查看sql server中对象的数量:
表有多少个
select count(1) from sysobjects where xtype='u'
视图:
select count(1) from sysobjects where xtype='v'
存储过程
select count(1) from sysobjects where xtype='p'
我自己写了个小例子,做发布和订阅的时候,对比两个数据库中的表,同名字的给选择出来
select * from 数据库1.dbo.sysobjects as crminner join 数据库2.dbo.sysobjects as cppon crm.name = cpp.namewhere crm.xtype='u' and cpp.xtype='u'
1.给某张表增加列
例如
alter table dbo.表名称 add employeename nvarchar(50) default '无' not null, employeeid int default 0 not null
2.复制出新表
select * into 新表 from 旧表
 当然  新表==  库名.架构名.表名称,旧表也是
就可以实现 跨库复制表过来
3.查看某张表中所有的列名称
select name from syscolumns  where id=object_id('表名称')
4. 求某两列的百分比,分母可能为0的情况
select conv=case when
字段=0 then 0
else
1/cast(字段 as numeric(5,2))
end
from 表 where 其他条件
5. 查出的结果,再添加一个自动增长列(排序列)
假如取个临时表的名字叫#tempt
select identity(int,1,1) as id,* into #tempt from (另一个select结果集,或者表名称)
删除临时表
if object_id('tempdb..#tempt') is not null
begin
drop table #tempt
end
6.数据库角色  权限说明
db_owner 执行数据库中的所有维护和配置活动。 
db_accessadmin 添加或删除 windows 用户、组和 sql server 登录的访问权限。 
db_datareader 读取所有用户表中的所有数据。 
db_datawriter 添加、删除或更改所有用户表中的数据。 
db_ddladmin 在数据库中运行任何数据定义语言 (ddl) 命令。 
db_securityadmin 修改角色成员身份并管理权限。 
db_backupoperator 备份数据库。 
db_denydatareader 无法读取数据库用户表中的任何数据。 
db_denydatawriter 无法添加、修改或删除任何用户表或视图中的数据。
7.修改 sa用户的密码
exec sp_password null,'000','sa'
8.sqlserver  update多条件多表关联更新
update customer set employeeid=0,employeename='' where id in(14775,14776,14778)select employeeid,employeename from dbo.customer as c where c.id in(14775,14776,14778)update a set a.employeeid=b.employeeid,a.employeename=b.employeename from (select * from dbo.customer ) ainner join (select * from contact as bb where bb.customerid in(14775,14776,14778))b on a.id=b.customeridselect employeeid,employeename from dbo.contact as c where c.customerid in(14775,14776,14778)select employeeid,employeename from dbo.customer as c where c.id in(14775,14776,14778)
9.mysql写法
update `visitlegalizelog`,`visituser` set visitlegalizelog.tel = visituser.tel where visitlegalizelog.phonemac = visituser.phonemac
其它类似信息

推荐信息