Sql Server 常用方法、存储过程备用
常用方法
--字符串转换成数字
--CAST("1" AS int)
--CONVERT(int,"1")
--截取字符串
SUBSTRING(OccurreAddress,0,7)
--拼接字符串,数字和数字字符相加,会按照数字相加
select 'str'+'11'--str11
select '2'+1 --3
select 2+CONVERT(nvarchar(max),2)--4
select '2'+CONVERT(nvarchar(max),2)--22
select 'str'+'11'--str11
select '22'+'11' --2211
--时间相关
Year(getdate()) --当前年
Month(getdate()) --当前月
Day(getdate()) --当前日
select getdate() --2016-04-11 17:36:07.950
select SUBSTRING('2015rr05',5,2)--rr
select getdate()
select Month(getdate())
Datediff(d,时间字段,getdate()) --得到离过现在还剩的天数
select Datediff(DAY,2015-12-01,getdate()) --第2个开始 第3个结束
select CONVERT(Datetime,'20151201')--2015-12-01 00:00:00.000
select CONVERT(Datetime,'2015-12-01')--2015-12-01 00:00:00.000
--select @a=count(1) from tb 此处查询语句中不能@a+=
--我设置一个临时@temp, select @temp=count(1) from tb1
--然后先@a=@temp
--我设置一个临时@temp, select @temp=count(1) from tb2
--然后先@a+=','+@temp
--这个临时变量一直变
declare @temp int
declare @b nvarchar(max)
set @temp=1;
set @b=CONVERT(nvarchar(max), @temp )
select @b--1
set @temp=2;
set @b+=','+CONVERT(nvarchar(max), @temp )
select @b--12
--以上代码需要转换类型
--其实我们查询数量的并赋值给@temp的时候,是int
--我们在上面直接声明declare @temp nvarchar(max),就不需要再转了。
代码1 存储过程,循环,+=
USE [ISFTCMOPSSystem]
GO
/****** Object: StoredProcedure [dbo].[SelectEventCount] Script Date: 04/19/2016 10:47:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--重特大案件SeriousCase
--矛盾纠纷案件 DisputesCase
--师生安全案件 StudentSafetyCase
--护路护线案件 RoadLineProtectiveCase
ALTER PROCEDURE [dbo].[SelectEventCount]
@DistrictCode varchar(max), --传入
@SC NVARCHAR(max) output,
@DC NVARCHAR(max) output,
@SSC NVARCHAR(max) output,
@RPC NVARCHAR(max) output
as
--重特大案件SC
declare @str1 nvarchar(max)
declare @RecentMonthCount INT
SET @RecentMonthCount = 0
while (@RecentMonthCount <12)
begin
select @str1= COUNT(1) from ISFTCMOPSSystem.dbo.Info_SeriousCase where
SUBSTRING(OccurreAddress,0,7)=@DistrictCode
and Datediff(MONTH,CONVERT(Datetime,OccurreDate),getdate())=@RecentMonthCount
IF @RecentMonthCount = 0
begin
if @str1 ='0'
set @SC='0'
else
set @SC=@str1
end
else
if @str1 ='0'
set @SC = @SC +',0'
else
set @SC = @SC +','+@str1
select @str1= COUNT(1) from ISFTCMOPSSystem.dbo.Info_DisputesCase where
SUBSTRING(PerIdNumber,0,7)=@DistrictCode
and Datediff(MONTH,CONVERT(Datetime,OccurDate),getdate())=@RecentMonthCount
IF @RecentMonthCount = 0
begin
if @str1 ='0'
set @DC='0'
else
set @DC=@str1
end
else
if @str1 ='0'
set @DC = @DC +',0'
else
set @DC = @DC +','+@str1
select @str1= COUNT(1) from ISFTCMOPSSystem.dbo.Info_StudentSafetyCase where
SUBSTRING(PrinIdNumber,0,7)=@DistrictCode
and Datediff(MONTH,CONVERT(Datetime,OccDate),getdate())=@RecentMonthCount
IF @RecentMonthCount = 0
begin
if @str1 ='0'
set @SSC='0'
else
set @SSC=@str1
end
else
if @str1 ='0'
set @SSC = @SSC +',0'
else
set @SSC = @SSC +','+@str1
select @str1= COUNT(1) from ISFTCMOPSSystem.dbo.Info_RoadLineProtectiveCase where
SUBSTRING(PrinIdNumber,0,7)=@DistrictCode
and Datediff(MONTH,CONVERT(Datetime,OccDate),getdate())=@RecentMonthCount
IF @RecentMonthCount = 0
begin
if @str1 ='0'
set @RPC='0'
else
set @RPC=@str1
end
else
if @str1 ='0'
set @RPC = @RPC +',0'
else
set @RPC = @RPC +','+@str1
set @RecentMonthCount = @RecentMonthCount + 1
end
--矛盾纠纷案件DC
SET @RecentMonthCount = 0
--------------------------------------------------------------------------------
--重特大案件SC
--select @DC=COUNT(1) from ISFTCMOPSSystem.dbo.Info_DisputesCase where SUBSTRING(PerIdNumber,0,7)=@DistrictCode
--select @SSC=COUNT(1) from ISFTCMOPSSystem.dbo.Info_StudentSafetyCase where SUBSTRING(PrinIdNumber,0,7)=@DistrictCode
--select @RPC=COUNT(1) from ISFTCMOPSSystem.dbo.Info_RoadLineProtectiveCase where SUBSTRING(PrinIdNumber,0,7)=@DistrictCode
代码 例子2
ALTER proc [dbo].[SelectSpecialEventCount]
@name nvarchar(100),
@arraySting nvarchar(max) output--因为数据库中没有数组类型,将查询多个表的值,组装成一个字符串,输出类型。
as
--重特大案件SeriousCase
--命案防控 MurderPrevention
--矛盾纠纷案件 DisputesCase
--师生安全案件 StudentSafetyCase
--护路护线案件 RoadLineProtectiveCase
declare @temp int
set @temp=0
select @temp= COUNT(1) from ISFTCMOPSSystem.dbo.Info_SeriousCase where CaseName= 'd'
if @temp = 0
begin
set @arraySting='0' --第一,=以后+=
end
else
begin
set @arraySting=CONVERT(nvarchar(100),@temp)--第一,=以后+=
end
select @temp= COUNT(1) from ISFTCMOPSSystem.dbo.Info_MurderPrevention where CaseName= @name
if @temp=0
begin
set @arraySting+=',0'
end
else
begin
set @arraySting+=','+CONVERT(nvarchar(100),@temp)
end
select @temp+= COUNT(1) from ISFTCMOPSSystem.dbo.Info_DisputesCase where CaseName= @name
if(@temp=0)
begin
set @arraySting+=',0'
end
else
begin
set @arraySting+=','+CONVERT(nvarchar(100),@temp)
end
select @temp+= COUNT(1) from ISFTCMOPSSystem.dbo.Info_StudentSafetyCase where CaseName= @name
if(@temp=0)
begin
set @arraySting+=',0'
end
else
begin
set @arraySting+=','+CONVERT(nvarchar(100),@temp)
end
select @temp+= COUNT(1) from ISFTCMOPSSystem.dbo.Info_RoadLineProtectiveCase where CaseName= @name
if(@temp=0)
begin
set @arraySting+=',0'
end
else
begin
set @arraySting+=','+CONVERT(nvarchar(100),@temp)
end
--调试
--declare @a nvarchar(max)
--exec SelectSpecialEventCount 'd',@a output --调用存储过程 参数外不带()
--print @a
--结果50,0,0,0,0
分页存储过程
USE [ISFTCMOPSSystem]
GO
/****** Object: StoredProcedure [dbo].[selectEventUnion] Script Date: 04/18/2016 16:01:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[selectEventUnion]
@name nvarchar(max),
@PageIndex int, --逗号
@PageSize int,
@PageCount int output
as
declare @Count int;
select @Count=count(1)FROM (
select '重特大案件' as title ,CaseName,SeriousCaseID as Id,'Info_SeriousCase' as tableName from dbo.Info_SeriousCase where CaseName like '%'+@name+'%'
union all
select '命案防控' as title ,CaseName,PreventionID as Id,'Info_MurderPrevention' as tableName from dbo.Info_MurderPrevention where CaseName like '%'+@name+'%'
union all
select '矛盾纠纷案件' as title ,CaseName,DCaseID as Id,'Info_DisputesCase' as tableName from dbo.Info_DisputesCase where CaseName like '%'+@name+'%'
union all
select '师生安全案件' as title ,CaseName,SSCaseID as Id ,'Info_StudentSafetyCase' as tableName from dbo.Info_StudentSafetyCase where CaseName like '%'+@name+'%'
union all
select '护路护线案件' as title ,CaseName,PropeCaseID as Id ,'Info_RoadLineProtectiveCase' as tableName from dbo.Info_RoadLineProtectiveCase where CaseName like '%'+@name+'%'
) as tableUnion;
select @PageCount=ceiling(@Count*1.0/@PageSize);
select title,CaseName,Id,tableName from
(select row_number() over (order by tableUnion.Id) as indexNumber, title,CaseName,Id,tableName from
(
select '重特大案件' as title ,CaseName,SeriousCaseID as Id,'Info_SeriousCase' as tableName from dbo.Info_SeriousCase where CaseName like '%'+@name+'%'
union all
select '命案防控' as title ,CaseName,PreventionID as Id,'Info_MurderPrevention' as tableName from dbo.Info_MurderPrevention where CaseName like '%'+@name+'%'
union all
select '矛盾纠纷案件' as title ,CaseName,DCaseID as Id,'Info_DisputesCase' as tableName from dbo.Info_DisputesCase where CaseName like '%'+@name+'%'
union all
select '师生安全案件' as title ,CaseName,SSCaseID as Id ,'Info_StudentSafetyCase' as tableName from dbo.Info_StudentSafetyCase where CaseName like '%'+@name+'%'
union all
select '护路护线案件' as title ,CaseName,PropeCaseID as Id ,'Info_RoadLineProtectiveCase' as tableName from dbo.Info_RoadLineProtectiveCase where CaseName like '%'+@name+'%'
) as tableUnion
)as tableUnionLast
where indexNumber between (@PageIndex-1)*@PageSize+1 and @PageIndex*@PageSize;
Sql Server 常用方法、存储过程备用的更多相关文章
- sql server系统存储过程大全
关键词:sql server系统存储过程,mssql系统存储过程 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 x ...
- 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?
在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalS ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过
SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过 存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...
- SQL Server中存储过程 比 直接运行SQL语句慢的原因
问题是存储过程的Parameter sniffing 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以后每次执行存储过 ...
- ADO.NET访问SQL Server调用存储过程带回参
1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...
- SQL Server 优化存储过程的七种方法
原文:SQL Server 优化存储过程的七种方法 优化存储过程有很多种方法,下面介绍最常用的7种. 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会 ...
- SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数
原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之 ...
- SQL Server中存储过程比直接运行SQL语句慢的原因
原文:SQL Server中存储过程比直接运行SQL语句慢的原因 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以 ...
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...
随机推荐
- August 4th, 2016, Week 32nd, Thursday
How does the world look through your eyes? 你眼中的世界是什么样的呢? This morning I saw a girl that is just the ...
- C++拷贝构造函数(深拷贝,浅拷贝)
http://www.cnblogs.com/BlueTzar/articles/1223313.html 对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; ...
- free(): invalid next size (fast/normal)问题
本文转自 http://blog.sina.com.cn/s/blog_77f1e27f01019qq9.html ,在此感谢! c++编译常会出现free(): invalid next size ...
- UML中的关联关系
UML中的关联关系其内在意思就是has a 如图: 相对于依赖关系,关联关系在代码中有所体现.上图中的关联关系在代码中体现为 其中water 中将Climate作为其中的属性. 当然,关 ...
- C# Winform 文件编码批量转换工具
在发布产品程序包时,往往需要对程序文件进行编码检查,写了一个可以批量修改文件编码格式的辅助工具,希望对有同样需求的童鞋有帮助. 1.程序界面: 2.核心代码: /// <summary> ...
- Rational Software Architect V8.5.1安装
转自:http://blog.sina.com.cn/s/blog_4a0238270101bupg.html IBM Rational Software Architect (RSA) 是 IBM ...
- linux下用top命令查看cpu利用率超过100%
今天跑了一个非常耗时的批量插入操作..通过top命令查看cpu以及内存的使用的时候,cpu的时候查过了120%..以前没注意..通过在top的情况下按大键盘的1,查看的cpu的核数为4核. 通过网上查 ...
- Android R文件相关问题
今天遇到的问题,gen下没有自动生成文件,而大部分java文件中错误是找不到R.java.“R cannot be resolved to a variable” 这就一定有别的原因造成错误, ...
- Linux下配置java的环境变量,So Easy!!
首先,在cd /usr ,mkdir java. 将java安装包放到/usr/java,并解压. 验证java. $ java -version 如果提示有如下安装包包含它,但是没有安装.是环境变量 ...
- hdu 1181 变形课
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...