-
sql函数实现去除字符串中的相同的字符串
复制代码代码如下:---去除字符串中重復的值函數createfunctionStringRemove(@strnvarchar(2000))returnsvarchar(2000)asbegindeclare@resultnvarchar(2000),@tempnvarchar(1000)set@result=''set@temp=''while(charindex(',',@str)<>0)beginset@temp=substring(@str,1,charindex(',',@str))if(charindex(@temp,@result)<=0)set@result=@result+@tempset@str=stuff(@str,1,charindex(',',@str),'')endreturn@resultendGO--('塗聚文','塗','塗聚文','1','23','1')--測試selectdbo.StringRemove('塗聚文,塗,塗聚文,1,23,1')...
数据库操作教程 2022-09-23 16:47:56 -
sqlserver自动生成拼音首字母的函数
建立一个查询,执行下面的语句生成函数fn_GetPy复制代码代码如下:--生成拼音首码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...
数据库操作教程 2022-09-23 16:46:59 -
必须会的SQL语句(七)字符串函数、时间函数
字符串函数 1.大小写转换 --upper转化成大写 --lower 转换成小写 selectupper('AsaR') 2...
数据库操作教程 2022-09-23 16:45:42 -
sqlserver如何利用开窗函数over()进行分组统计
这是一道常见的面试题,在实际项目中经常会用到。需求:求出以产品类别为分组,各个分组里价格最高的产品信息...
数据库操作教程 2022-09-23 16:44:47 -
SQLServer行列互转实现思路(聚合函数)
有时候会碰到行转列的需求(也就是将列的值作为列名称),通常我都是用CASEEND+聚合函数来实现的。如下:declare@ttable(StudentNamenvarchar(20),Subjectnvarchar(20),Scoreint)Insertinto@t(StudentName,Subject,Score)values('学生A','中文',80);Insertinto@t(StudentName,Subject,Score)values('学生A','数学',78);Insertinto@t(StudentName,Subject,Score)values('学生A','英语',92);Insertinto@t(StudentName,Subject,Score)values('学生B','中文',89);Insertinto@t(StudentName,Subject,Score)values('学生B','数学',87);Insertinto@t(StudentName,Subject,Score)values('学生B','英语',75);Insertinto@t(...
数据库操作教程 2022-09-23 16:44:40 -
SQLServer之JSON函数详解
SQLServer2005开始支持XML数据类型,提供原生的XML数据类型、XML索引及各种管理或输出XML格式的函数。随着JSON的流行,SQLServer2016开始支持JSON数据类型,不仅可以直接输出JSON格式的结果集,还能读取JSON格式的数据...
数据库操作教程 2022-09-23 16:44:16 -
关于SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的场景分析
在推行系统中,时不时会有用户提出希望系统能自动推送邮件,由于手头的工具和能力有限,不少需求都借助于sqlserver的邮件触发来实现。步骤:1、配置邮箱...
数据库操作教程 2022-09-23 16:42:45 -
sqlserver使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期
问题:在数据库脚本开发中,有时需要生成一堆连续数字或者日期,例如yearlyreport就需要连续数字做年份,例如dailyreport就需要生成一定时间范围内的每一天日期。而自带的系统表master..spt_values存在一定的局限性,只是从0到2047(验证脚本:select*frommaster..spt_valuesbwhereb.type='P'),也不能直接生成连续日期...
数据库操作教程 2022-09-23 16:42:36 -
SQLServer中row_number函数的常见用法示例详解
一.SQLServerRow_number函数简介ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数。行号以每个分区中第一行的行号开头...
数据库操作教程 2022-09-23 16:42:08 -
SQLServer开窗函数Over()代替游标的使用详解
前言:今天在优化工作中遇到的sql慢的问题,发现以前用了挺多游标来处理数据,这样就导致在数据量多的情况下,需要一行一行去遍历从而计算需要的数据,这样处理的结果就是数据慢,容易卡死。语法介绍:1、与Row_Number()函数结合使用,对结果进行排序,这个是我们使用的非常多的 2、与聚合函数结合使用,利用over子句的分组和排序,对需要的数据进行操作例如:SUM()Over()累加值、AVG()Over()平均数MAX()Over()最大值、MIN()Over()最小值具体介绍:下面模拟工作中通过开窗函数代替游标的例子,通过期初余额与单据的预收金额、应收金额、实收金额来计算截止本单的期末余额,在以往就是通过游标一行一行去遍历,计算需要的期末余额,现在使用SUM()Over()来代替,最终要实现的效果图如下:第一行表示标题;第二行表示客户,是一行空行;第三行是期初余额,只显示期末余额的数据,第四至第六行表示的是每种单据的余额情况,并逐步汇总当前行的期末余额数据;最后一行表示的是对客户的合计...
数据库操作教程 2022-09-23 16:42:05 -
sql去零函数datagridview中数字类型常出现后面的零不能去掉
复制代码代码如下:declare@bldecimal(10,6),@numint,@num1int,@strchar(20),@str1char(20),@str2char(20),@str3char(20),@zxint,@zx1intset@bl=1110.10000set@str1=ltrim(REVERSE(cast(@blaschar(30))))---颠倒print@str1set@zx1=cast(@blasint)set@str2=cast(@zx1aschar(10))--取整数部分print@zx1set@num=len(@str2)print@numset@num1=charindex('...
数据库操作教程 2022-09-23 16:41:39 -
SQLServerEVENTDATA()函数来获取DDL触发器信息
复制代码代码如下:--CreatealogtableCREATETABLETriggerLog(LogInfoxml)--CreateadummytabletodeletelateronCREATETABLETableToDelete(IdintPRIMARYKEY)--新建一个新表,作为删除实验表INSERTINTOTableToDeleteVALUES(1)GO--创建一个DropTable的DDLCREATETRIGGERStopTableDropONDATABASEAFTERDROP_TABLEASDECLARE@EventDataASxmlSET@EventData=EVENTDATA()--必须要在rollback之前截获DDL信息ROLLBACKPRINT'DROPTABLEattemptindatabase'+DB_NAME()+'.'INSERTINTOTriggerLogVALUES(@EventData)执行如下删除操作:DROPTABLETableToDelete会触发上面的DDL,从而回滚操作。执行下面的Sql:SELECT*FROMTriggerLog查看刚...
数据库操作教程 2022-09-23 16:41:39