常用方法



--字符串转换成数字
--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 常用方法、存储过程备用的更多相关文章

  1. sql server系统存储过程大全

    关键词:sql server系统存储过程,mssql系统存储过程 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 x ...

  2. 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?

    在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalS ...

  3. 在易语言中调用MS SQL SERVER数据库存储过程方法总结

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...

  4. SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

    SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过     存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...

  5. SQL Server中存储过程 比 直接运行SQL语句慢的原因

    问题是存储过程的Parameter sniffing     在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以后每次执行存储过 ...

  6. ADO.NET访问SQL Server调用存储过程带回参

    1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign  use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...

  7. SQL Server 优化存储过程的七种方法

    原文:SQL Server 优化存储过程的七种方法 优化存储过程有很多种方法,下面介绍最常用的7种. 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会 ...

  8. SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

    原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之 ...

  9. SQL Server中存储过程比直接运行SQL语句慢的原因

    原文:SQL Server中存储过程比直接运行SQL语句慢的原因 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以 ...

  10. 查看SQL SERVER 加密存储过程,函数,触发器,视图

    原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create  PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...

随机推荐

  1. 完善DriveInfoEx源代码 获取计算机硬盘序列号

    概述: 获取计算机硬盘序列号用途很多,在网上找到了一个C++的源代码DriveInfoEx(点这里查看).非常好的一个DLL,.NET项目可以直接引用,而且源代码里有示例. 但这个DLL在Win7非管 ...

  2. [Android Pro] 监听Blutooth打开广播

    <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission a ...

  3. Catch That Cow(poj 3278)

    给定两个整数n和k 通过 n+1或n-1 或n*2 这3种操作,使得n==k 输出最少的操作次数 //广搜,a是队列,step记录步数,vis记录哪些数被搜到过 #include<cstdio& ...

  4. oracle 序列 详解

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建 ...

  5. oracle 10g 学习之服务器端安装(1)

    Oracle 简介 lOracle 是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词 lOracle 公司是全球最大的信息管理软件及服务供应商,成立于197 ...

  6. hdu 1286:找新朋友(数论,欧拉函数)

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. Linux 串口编程(转)

    无论那种操作方式,一般都通过四个步骤来完成: (1) 打开串口 (2) 配置串口 (3) 读写串口 (4) 关闭串口 转自

  8. BZOJ 3224: Tyvj 1728 普通平衡树 treap

    3224: Tyvj 1728 普通平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除 ...

  9. Codeforces Round #313 (Div. 2) D. Equivalent Strings

    D. Equivalent Strings Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/559/ ...

  10. POJ 3461 Oulipo KMP

    题意:统计其中一个子串的出现次数 题解:即KMP算法中j==m的次数 //作者:1085422276 #include <cstdio> #include <cmath> #i ...