-
sqlserver四舍五入使用round函数及cast和convert函数
引言 今天和测试沟通一个百分比计算方式时遇到一个问题,我在存储过程里用到了强转CAST(32.678ASDECIMAL(5,1)) 我认为该方式只会保留一位小数,我给测试的回复是我并没有用到四舍五入函数,数据也没有四舍五入,而测试说他们自己验证后觉的数据是经过四舍五入了的。想到这里于是我再试了试存储过程的每个计算点,才发现了这个问题...
数据库操作教程 2022-09-23 17:54:55 -
Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理==================DECLARE@A1VARCHAR(10),@A2VARCHAR(10),@A3INTDECLARECURSORYOUCURNAMEFORSELECTA1,A2,A3FROMYOUTABLENAMEOPENYOUCURNAMEfetchnextfromyoucurnameinto@a1,@a2,@a3while@@fetch_status<>-1beginupdate…set…-a3where………您要执行的操作写在这里fetchnextfromyoucurnameinto@a1,@a2,@a3endcloseyoucurnamedeallocateyoucurname—————————————在应用程序开发的时候,我们经常可能会遇到下面的应用,我们会通过查询数据表的记录集,循环每一条记录,通过每一条的记录集对另一张表进行数据进行操作,如插入与更新,我们现在假设有一个这样的业务:老师为所在班级的学生选课,选的课程如有哲学、马克思主义政治经济学、毛泽东思想...
数据库操作教程 2022-09-23 17:53:26 -
sqlserver性能优化之nolock
伴随着时间的增长,公司的数据库会越来越多,查询速度也会越来越慢。打开数据库看到几十万条的数据,查询起来难免不废时间...
数据库操作教程 2022-09-23 17:50:41 -
SQL数据库实例名称找不到或远程连接失败并显示错误error40的原因及解决办法
分享由字符“”转义引起的SQL数据库实例名称找不到或远程连接失败并显示错误error40的解决办法:一、问题介绍很久没有用c#去连数据库程序了,不过在网上找了一些资料,基本上还是写出来了,但是调试初步完成的程序时候,却发现在con.open()这个方法总是出错,说找不到数据库实例名称,或者远程连接失败,显示的错误是error40。错误如下: 二、环境介绍1、我的数据库是sqlserver2008,使用的开发环境是vs2013,.net4.02、我的数据库安装采用的命名实例,所以在编写数据库连接字符串的时候的服务器名称应为【计算机名数据实例名】数据库连接字符为: 当发现连接错误之后,我以为是我的sql2008和vs2013环境不对而导致的错误,之后把以前的项目打开,把数据库附加上,更改一下数据连接字符串,发现错误是一样的...
数据库操作教程 2022-09-23 17:49:56 -
SQLServer使用row_number分页的实现方法
本文为大家分享了SQLServer使用row_number分页的实现方法,供大家参考,具体内容如下1、首先是selectROW_NUMBER()over(orderbyidasc)as'rowNumber',*fromtable1生成带序号的集合2、再查询该集合的第1 到第5条数据select*from(selectROW_NUMBER()over(orderbyidasc)as'rowNumber',*fromtable1)astempwhererowNumberbetween1and5完整的Sql语句declare@pagesizeint;declare@pageindexint;set@pagesize=3set@pageindex=1;--第一页select*from(selectROW_NUMBER()over(orderbyidasc)as'rowNumber',*fromtable1)astempwhererowNumberbetween(((@pageindex-1)*@pagesize)+1)and(@pageindex*@pagesize)set@page...
数据库操作教程 2022-09-23 17:49:23 -
实例详解Groupby和Having子句
元旦节,干点啥呢,小编给大家分享Groupby和Having子句的小例子,具体详情如下所示:表结构:要求:查询有多个员工的工资不低于2000的部门编号(就是说如果一个部门的员工大于2000的人数有两个或两个以上就查询出来)sql语句:select[DEPARTMENT_ID],count([SALARY])from[DEPARTMENT]where[SALARY]>'2000'groupby[DEPARTMENT_ID]havingcount([SALARY])>1说明:where子句和having子句都是用来筛选条件用的,不同的是,where子句只能对分组前的属性进行删选,而having子句只能对分组后的属性进行筛选。...
数据库操作教程 2022-09-23 17:46:19 -
SQL中decode()函数简介
DECODE函数,是ORACLE公司的SQL软件ORACLEPL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。今天看别人的SQL时看这里面还有decode()函数,以前从来没接触到,上网查了一下,还挺好用的一个函数,写下来希望对朋友们有帮助哈!decode()函数简介:主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);使用方法:Selectdecode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)FromtalbenameWhere…其中columnname为要选择的table中所定义的column,·含义解释:decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)的理解如下:if(条件==值1)then return(翻译值1)elsif(条件==值2)then return(翻译值2) ......elsif(条件==值n)then return(翻译值n)else return(缺省值)endif注:其中缺省值可以是...
数据库操作教程 2022-09-23 17:45:11 -
MyBatisMapperProviderMessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
最近在项目中有这么一段代码:下载服务器基础业务数据进行本地批量插入操作,因项目中使用mybatis进行持久化操作,故直接考虑使用mybatis的批量插入功能。1.以下是Mapper接口的部分代码publicinterfacePrintMapper{@InsertProvider(type=PrintMapperProvider.class,method="insertAllLotWithVehicleCode4H2")voidinsertAllLotWithVehicleCode(List<LotWithVehicleCodeBO>lotWithVehicleCodes);}2.对应MapperProvider中函数片段publicStringinsertAllLotWithVehicleCode4H2(Map<String,List<LotWithVehicleCodeBO>>map){List<LotWithVehicleCodeBO>lotWithVehicleCodeBOs=map.get("list");StringBuilde...
数据库操作教程 2022-09-23 17:44:13 -
SqlServer中查看当前Open的Cursor方法
遇到错误:Acursorwiththename''alreadyexists,想要看是什么代码导致的。找到下面几种方法.--测试声明Cursor并且打开DECLAREvend_cursorCURSORFORSELECT*FROMPurchasing.VendorOPENvend_cursorFETCHNEXTFROMvend_cursor;--使用下面的三种方法都可以SELECTec.session_id,ec.name,ec.properties,ec.creation_time,ec.is_open,ec.writes,ec.reads,t.textFROMsys.dm_exec_cursors(0)ecCROSSAPPLYsys.dm_exec_sql_text(ec.sql_handle)tdbccactivecursors(0)SELECT*FROMMASTER..SYSCURSORS结果:...
数据库操作教程 2022-09-23 17:44:11 -
SQLServer自定义异常raiserror使用示例
在使用SQLServer存储过程或者触发器时,通常会使用自定义异常来处理一些特殊逻辑。例如游标的销毁,事务的回滚...
数据库操作教程 2022-09-23 17:44:07 -
SQLSERVER分页查询关于使用Top方式和row_number()解析函数的不同
临近春节,心早已飞了不在工作上了,下面小编给大家整理些数据库的几种分页查询。SqlSever2005之前版本:selecttop页大小*from表名whereidnotin(selecttop页大小*(查询第几页-1)idfrom表名orderbyid)orderbyid例如:selecttop10*--10为页大小from[TCCLine].[dbo].[CLine_CommonImage]whereidnotin(--40是这么计算出来的:10*(5-1)--页大小*(查询第几页-1)selecttop40idfrom[TCCLine].[dbo].[CLine_CommonImage]orderbyid)orderbyid结果为:SqlSever2005及以上版本,多了个分页查询方法:/**firstIndex:起始索引*pageSize:每页显示的数量*orderColumn:排序的字段名*SQL:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句*/selecttoppageSizeo.*from(selectrow_number()over(orderbyorderC...
数据库操作教程 2022-09-23 17:43:41 -
详解SQL中drop、delete和truncate的异同
第一:相同点: truncate和不带where子句的delete,以及drop都会删除表内的数据第二:不同点:1.truncate和delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。2.delete语句是数据库操作语言(dml),这个操作会放到rollbacksegement中,事务提交之后才生效;如果有相应的trigger执行的时候将被触发...
数据库操作教程 2022-09-23 17:43:38