-
SQL判断给定日期值(或时间段)所在星期的星期一和星期天的日期
一、给定一个日期值,求出此日期所在星期的星期一和星期天的日期数据例如给定一个日期2010-09-01,求出它所在星期的星期一是2010-08-30,星期天是2010-09-05Function创建如下:复制代码代码如下:USE[MSSQL]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEFUNCTION[dbo].[My_OneDay_GetWeekFirstAndEndDay](@tmpDateDATETIME)RETURNS@tmpTableTABLE(FirstDayDATETIME,EndDayDATETIME)[email protected],b.EndDayFROM(SELECT1ASID,DATEADD(wk,DATEDIFF(wk,0,@tmpDate),0)ASFirstDAy)aLEFTJOIN(SELECT1ASID,DATEADD(wk,DATEDIFF(wk,0,@tmpDate),6)ASEndDay)bONa.ID=b.IDRETURNEndFunctio...
数据库操作教程 2022-09-23 20:42:38 -
sql存储过程获取汉字拼音头字母函数
复制代码代码如下:--函数CREATEfunctionfn_GetPy(@strnvarchar(4000))returnsnvarchar(4000)--WITHENCRYPTIONasbegindeclare@intLenintdeclare@strRetnvarchar(4000)declare@tempnvarchar(100)set@intLen=len(@str)set@strRet=''while@intLen>0beginset@temp=''select@temp=casewhensubstring(@str,@intLen,1)>='帀'then'Z'whensubstring(@str,@intLen,1)>='丫'then'Y'whensubstring(@str,@intLen,1)>='夕'then'X'whensubstring(@str,@intLen,1)>='屲'then'W'whensubstring(@str,@intLen,1)>='他'then'T'whensubstring(@str,@intLen,1)...
数据库操作教程 2022-09-23 20:42:31 -
sql常用技巧整理
--语句功能--数据操作SELECT--从数据库表中检索数据行和列INSERT--向数据库表添加新数据行DELETE--从数据库表中删除数据行UPDATE--更新数据库表中的数据--数据定义CREATETABLE--创建一个数据库表DROPTABLE--从数据库中删除表ALTERTABLE--修改数据库表结构CREATEVIEW--创建一个视图DROPVIEW--从数据库中删除视图CREATEINDEX--为数据库表创建一个索引DROPINDEX--从数据库中删除索引CREATEPROCEDURE--创建一个存储过程DROPPROCEDURE--从数据库中删除存储过程CREATETRIGGER--创建一个触发器DROPTRIGGER--从数据库中删除触发器CREATESCHEMA--向数据库添加一个新模式DROPSCHEMA--从数据库中删除一个模式CREATEDOMAIN--创建一个数据值域ALTERDOMAIN--改变域定义DROPDOMAIN--从数据库中删除一个域--数据控制GRANT--授予用户访问权限DENY--拒绝用户访问REVOKE--解除用户访问权限--事务控制COM...
数据库操作教程 2022-09-23 20:42:22 -
SQL语句练习实例之三——平均销售等待时间
复制代码代码如下:---1.平均销售等待时间---有一张Sales表,其中有销售日期与顾客两列,现在要求使用一条SQL语句实现计算--每个顾客的两次购买之间的平均天数--假设:在同一个人在一天中不会购买两次createtablesales(custnamevarchar(10)notnull,saledatedatetimenotnull)goinsertsalesselect'张三','2010-1-1'unionselect'张三','2010-11-1'unionselect'张三','2011-1-1'unionselect'王五','2010-2-1'unionselect'王五','2010-4-1'unionselect'李四','2010-1-1'unionselect'李四','2010-5-1'unionselect'李四','2010-9-1'unionselect'李四','2011-1-1'unionselect'赵六','2010-1-1'unionselect'钱途','2010-1-1'unionselect'钱途','2011-3-1'unionsel...
数据库操作教程 2022-09-23 20:42:14 -
sqlserver中时间为空的处理小结
现将几种主要情况进行小结:一、如何输入NULL值如果不输入null值,当时间为空时,会默认写入"1900-01-01",在业务处理时很麻烦。ctrl+0即可输入NULL值...
数据库操作教程 2022-09-23 20:42:06 -
sqlserver数据库迁移后,孤立账号解决办法
复制代码代码如下:declare@cmdnvarchar(4000)set@cmd=N'exec[?].sys...
数据库操作教程 2022-09-23 20:42:03 -
uniqueidentifier转换成varchar数据类型的sql语句
复制代码代码如下:---涂聚文GeovinDuDECLARE@myiduniqueidentifierSET@myid=NEWID()SELECTCONVERT(char(255),@myid)AS'char';GO--涂聚文GeovinDudeclare@allstringchar(255)...
数据库操作教程 2022-09-23 20:41:56 -
sqlserver中获取月份的天数的方法分享
如下:复制代码代码如下:CREATEFUNCTION[dbo].[udf_DaysInMonth](@DateDATETIME)RETURNSINTASBEGINDECLARE@dimASTABLE(MINT,DyINT)INSERTINTO@dimVALUES(1,31),(3,31),(5,31),(7,31),(8,31),(10,31),(12,31),(4,30),(6,30),(9,30),(11,30),(2,CASEWHEN(YEAR(@Date)%4=0ANDYEAR(@Date)%100<>0)OR(YEAR(@Date)%400=0)THEN29ELSE28END)DECLARE@RValueINTSELECT@RValue=[Dy]FROM@dimWHERE[M]=MONTH(@Date)RETURN@RValueENDGO获取月份天数,以前在博客上也有写过,不过它只是取得二月份的天数。链接如下:http://www.cnblogs.com/insus/articles/2025019.html现第一眼看见专案中这个函数,总觉它写得不够好的感觉,是否...
数据库操作教程 2022-09-23 20:41:53 -
分享SQLServer删除重复行的6个方法
1.如果有ID字段,就是具有唯一性的字段复制代码代码如下:delecttablewhereidnotin(selectmax(id)fromtablegroupbycol1,col2,col3...)groupby子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。2.如果是判断所有字段也可以这样复制代码代码如下:select*into#aafromtablegroupbyid1,id2,....deletetableinsertintotableselect*from#aa3.没有ID的情况复制代码代码如下:selectidentity(int,1,1)asid,*into#tempfromtabeldelect#whereidnotin(selectmax(id)from#groupbycol1,col2,col3...)delecttableinsetintotable(...)select.....from#temp4.col1+','+col2+','...col5联合主键复制代码代码如下:select*fromtablewhe...
数据库操作教程 2022-09-23 20:41:46 -
sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
复制代码代码如下:--代码一DECLARE@ccINTSELECTNewsId,ROW_NUMBER()OVER(ORDERBYSortNumDESC)ASRowIndexINTO#tbFROMnewsWITH(NOLOCK)WHERENewsTypeId=@NewsTypeIdANDIsShow=1SET@cc=@@ROWCOUNTSELECTn.*FROMnewsASnWITH(NOLOCK),#tbAstWHEREt.RowIndex>@PageIndex*@PageSizeANDt.RowIndex<=(@PageIndex+1)*@PageSizeANDt.newsid=n.newsidSELECT@ccDROPTABLE#tb复制代码代码如下:--代码二DECLARE@ccINTSELECTNewsId,ROW_NUMBER()OVER(ORDERBYSortNumDESC)ASRowIndexINTO#tbFROMnewsWITH(NOLOCK)WHERENewsTypeId=@NewsTypeIdANDIsShow=1SET@cc=@@ROWCOUNTSEL...
数据库操作教程 2022-09-23 20:41:40 -
sqlserver中通过osql/ocmd批处理批量执行sql文件的方法
利用osql/ocmd批处理批量执行sql文件注意:在上图中我们可以看到osql并不支持SQLServer2008的所有功能,如果需要使用SQLServer2008的所有功能可以使用ocmd命令。有了osql/ocmd命令要批量执行sql文件当然需要写一个批处理命令,例如我们执行上面sql文件就可以在txt中编写下面的语句:复制代码代码如下:osql-S"127.0.0.1"-U"sa"-P"sa"-d"Northwind"-i"%CD%/1.sql"osql-S"127.0.0.1"-U"sa"-P"sa"-d"Northwind"-i"%CD%/2.sql"然后保存成sql.bat同上面的1.sql和2.sql放到同一个文件下,在执行时双击sql.bat就可以了...
数据库操作教程 2022-09-23 20:41:36 -
在SQL查询中使用LIKE来代替IN查询的方法
如下:复制代码代码如下:SELECT*FROMOrdersWHEREOrderGUIDIN('BC71D821-9E25-47DA-BF5E-009822A3FC1D','F2212304-51D4-42C9-AD35-5586A822258E')可以看出直接在IN后面跟ID的集合需要将每一个ID都用单引号引起来。在实际应用中会遇到这么一种情况,在界面中收集的是一串GUID的拼接字符串,中间以逗号隔开,如果作为参数传到一个存储过程中执行,最终生成的语句会是下面这样:复制代码代码如下:SELECT*FROMOrdersWHEREOrderGUIDIN('BC71D821-9E25-47DA-BF5E-009822A3FC1D,F2212304-51D4-42C9-AD35-5586A822258E')这样就不能查询到正确的结果...
数据库操作教程 2022-09-23 20:41:31