自己常用SQL语句收集

多对多判断
select a.* from  Temp2 a (nolock) where not exists(select * from Temp1  where 年月=a.年月  and 水表代码=a.水表代码 and 水价分类=a.水价分类) order by 小计
SELECT * FROM TB WHERE CHECKSUM(*) NOT IN (SELECT CHECKSUM(*)FROM TA)

判断数据是否是小数
select * from dnsfk
where cast(substring(cast(水量 as varchar),charindex('.',cast(水量 as 
varchar))+1,len(cast(水量 as varchar))) as int) <> 0

异地备份
backup database 数据库 to disk='\你的计算机名共享目录名备份文件名'

查看数据库中字段是否有重复
select 代码 from 表名 group by 代码 having count(代码)>1

判断表在不在,在就删除
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[temp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[temp]

1、二个表的更新
select count(*) as cnt1 from 表1 where 户号 in (select 户号 from 表2)
delete from 表1 where 户号 in (select 户号 from 表2)
insert into 表1 select * from 表2
select count(*) as cnt2 from 表2

更新了 cnt1 条记录
添加了 cnt2-cnt1 条数据

2、日志的删除
backup log water with no_log
DBCC SHRINKDATABASE (water,TRUNCATEONLY )


3、多对多置换
update c200303 set c200303.编号=jbk.编号 from jbk where (c200303.委托号<>0) and (jbk.代码=c200303.代码)

4、导文本
EXEC master..xp_cmdshell 'bcp "SELECT 户号,户名,convert(char(10),抄表日期,120),水量  FROM water.dbo.c200303" queryout c:DT.txt -c -S"sony" -U"sa" -P"sa"'
bcp 可以实现数据的导入导出。
EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect in c:	emp1.txt -c -q -S"servername" -U"sa" -P""'
//导入 
EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect out c:	emp1.txt -c -q -S"servername" -U"sa" -P""'
//导出

6、汇总语句   select max(帐本号) as 帐本号,sum(case when 用水类别='生活' then 水量 end) as 生活,sum(case when 用水类别='生产' then 水量 end) as 生产,sum(case when 用水类别='商业' then 水量 end) as 商业,sum(case when 用水类别='生产' then 水量 end) as 生产,sum(case when 用水类别='生活加压' then 水量 end) as 生活加压,
sum(case when 用水类别='环卫生活' then 水量 end) as 环卫生活,sum(case when 用水类别='环卫生产' then 水量 end) as 环卫生产,sum(case when 用水类别='华电' then 水量 end) as 华电,sum(case when 用水类别='自用水' then 水量 end) as 自用水,sum(case when 用水类别='商业加压' then 水量 end) as 商业加压,sum(case when 用水类别<>' ' then 水量 end) as 总计 from c200306 group by 帐本号 order by 帐本号

复制语句
EXEC master..xp_cmdshell 'copy c:dt.txt d:dt.txt'

可将空格去掉生成文本
EXEC master..xp_cmdshell 'bcp "SELECT cast(户号 as char(9))+cast(户名 as char(40))+convert(char(10),抄表日期,112)+cast(水量 as char(10))  FROM water.dbo.c200303" queryout c:DT.txt -c -S"sony" -U"sa" -P"sa"'

select isnull(托收标志,'') as 托收标志,dwdazl.单位编码,dwsbzl.编号,dwdazl.单位名称,dwdazl.联系人,dwdazl.联系电话,dwdazl.单位地址,dwsbzl.代码,dwsbzl.户号,dwsbzl.口径,dwsbzl.用水类别,dwsbzl.水表位置 from dwdazl,dwsbzl where dwdazl.单位编码=dwsbzl.单位编码 and dwsbzl.单位编码 in (select 单位编码 from dwsbzl where 托收标志='Y' and 户号 like '%A%') order by dwdazl.单位编码,托收标志 desc

7、测出每个字符位置
declare @a varchar(8000),@i int
set @a='wof|中华人民共和国|good|order|一条大河|'
set @i=charindex('|',@a)
while @i>0
begin
print @i
select @a=substring(@a,@i+1,8000)
,@i=charindex('|',@a)
end
原文地址:https://www.cnblogs.com/msony924840/p/4415130.html