更改sqlserver服务器排序规则
问题:“链接服务器OLEDB访问接口"SQLNCLI1"返回了消息"该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"过程:1、创建链接服务器;2、服务器上开启如下的服务:说明:将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。如下:SELECTid,value=stuff((SELECT','+valueFROMtbAStWHEREt.id=tb.idFORxmlpath('')),1,1,''
代码如下:/*创建表类型.*/createtypeXTableTypeastable(IDint,Namesvarchar(10));go/*创建一个存储过程以表值参数作为输入*/createProceduresp_test(@tp1XTableTypereadonly)assetNoCountonselect*,getdate()from@tp1;setNoCountoffgo/*声明表值参数变
SQLSERVER数据库,在跨库多表连接查询时,若两数据库默认字符集不同,系统就会返回这样的错误:“无法解决equalto操作的排序规则冲突。”COLLATE是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则转换。语法:COLLATE{<collation_name>|database_default}<collation_name>:
SELECT*fromAunionselect*fromB--查询A\B表的并集重复的项只显示一个SELECT*fromAunionallselect*fromB----查询A\B表的并集重复的也显示SELECT*fromAunionallselect*fromBorderbyidasc---查询A\B表的并集重复的也显示,并按照id升序SELECT*fromAINTERSECTselect*fr
declare@gourpmitinyint--按几分钟分组set@gourpmi=5selectcast(floor(cast(时间asfloat)2460/gourpmi)gourpmi/60/24assmalldatetime),SUM(字段),Count(字段)fromtbgroupbycast(floor(cast(时间asfloat)2460/gourpmi)gourpmi/60/24
语法格式:row_number()over(partitionby分组列orderby排序列desc)row_number()over()函数中,over()里的分组以及排序的执行晚于where、groupby、orderby的执行。1.使用row_number()函数进行编号,如selectemail,customerID,ROW_NUMBER()over(orderbypsd)asrowsfr
正常排序:orderby字段1,字段2,......字段n--所有字段按正序排序orderby字段1desc,字段2,......字段n--字段1按返序,其它按正序排序特殊排序:字段从小到大,但把0排到最后orderby(case字段名when'0'then'a'else字段名end)--字段为字符时orderby(case字段名when0then999999else字段名end)--字段为数字时
在SQLServer中,一般是用维护计划实现删除过期文件。不过直接用脚本也是可以的,而且更灵活。下面介绍三种方法。1.xp_delete_file--优点:兼容性好--缺点:不能删除SQLServer之外创建的文件,包括RAR--备注:维护计划中的“清理维护”也是调用此扩展存储过程来删除文件。DECLARE@oldDateDATETIMESET@oldDate=GETDATE()-7EXECUTE
翻看博客,发现居然没有触发器使用说明,现补上。 触发器触发的时候两个特殊的表: 插入表(instered表):Inserted表的数据是插入或是修改后的数据 删除表(deleted表):deleted表的数据是更新前的或是删除的数据这两张表的结构与被改触发器应用的表的结构相同,存储的数据是要进行操作的数据,当触发器完成工作后,这两张表就会被删除。 Instead of 和 After
用表B的数据(B1列,B2)更新表A的A1,A2列SQLServer:updateASETA.A1=b.B1,A.A2=B.A2FROMA,BWHEREA.ID1=B.ID1andA.ID2=B.ID2;Access:updateA,BsetA.A1=B.B1,A.A2=B.B2whereA.ID1=B.ID1andA.ID2=B.ID2;--或updateAINNERJOINBONA.ID1=B
在SQL中(以SQLServer为例),查询存在一个表而不在另一个表中的数据记录的方法有很多,介绍其中4种:1、方法一(仅适用单个字段):使用notin,比较容易理解,缺点是效率低如:selectA.IDfromAwhereA.IDnotin(selectIDfromB);2、方法二(适用多个字段匹配):使用leftjoin...on...,"B.IDisnull"表示左连接之
sql2005有个函数ISNUMERIC(expression)函数:当expression为数字时,返回1,否则返回0。这只是一个菜鸟级的解决办法,大多数情况比较奏效。方法一:selectISNUMERIC('123')--结果为1但是,该函数有个缺点!SELECT,ISNUMERIC('-')as'-'--1,ISNUMERIC('+')as'+'--1,ISNUMERIC('$')as'$'
--提取数字IFOBJECT_ID('DBO.GET_NUMBER2')ISNOTNULLDROPFUNCTIONDBO.GET_NUMBER2GOCREATEFUNCTIONDBO.GET_NUMBER2(@SVARCHAR(100))RETURNSVARCHAR(100)ASBEGINWHILEPATINDEX('%[^0-9]%',@S)>0BEGINset@s=stuff(@s,pa
获取分组后取某字段最大一条记录方法一:(效率最高)select*fromtestasa2.wheretypeindex=(selectmax(b.typeindex)3.fromtestasb4.wherea.type=b.type);方法二:(效率次之)select2.a.*fromtesta,3.(selecttype,max(typeindex)typeindexfromtestgroupb
只筛选一个字段值相同的记录select*fromAwherePDDTin(selectPDDTFROMAgroupbyPDDThavingcount(PDDT)>1)筛选多个字段值相同的的记录SELECTCOUNT(*),DeptID,PDDT,DLNo,DLNoRe,MacNoFROMMakeYieldGROUPBYDeptID,PDDT,DLNo,DLNoRe,MacNohavingco
普通SQL事务:begintransactiontrdeclare@errorint;set@error=0;select*fromCar_Brandset@error=@error+@@ERRORselect1/0set@error=@error+@@ERRORselect*fromAREAset@error=@error+@@ERRORprint'ihaveexecuted!'set@erro
sql取A字段重复记录的B字段值最大的一条记录selectmax(id)id,namefrom表groupbyname--如果表中还有其他字段要查出,那么select*from表whereidin(selectmax(id)from表groupbyname)
1、数据库是否存在ifexists(select*fromsys.databaseswherename=’数据库名’)print'存在'--dropdatabase[数据库名]--如果存在则删除2、表是否存在ifexists(select*fromsysobjectswhereid=object_id(N’[表名]’)andOBJECTPROPERTY(id,N’IsUserTable’)=1)p
SQLServer安装后,服务器再改名,造成名称不一致的,使用以下方法解决:此操作也适用于修改服务器名。1、查询当前服务器的旧服务器名:SELECT@@servernameAS旧服务器名2、查询当前服务器的最新服务器名:SELECTserverproperty('servername')AS新服务器名3、若上述两服务器名不一致,则以serverproperty('servername
1.判断空值,不成功selectcase字段名whennullthen'空值'else'非空值'ENDas字段别名from表2.判断空值,成功selectcasewhen字段名ISNULLthen'空值'when字段名='OK'then'OK值'else'非空值'END字段别名from表
取整函数:1、trunc(value,precision)按精度(precision)截取某个数字,不进行舍入操作。返回截尾到y位小数的x值:trunc(x,[y]):selecttrunc(23.33)------------232、round(value,precision)根据给定的精度(precision)输入数值[四舍五入取整]。返回舍入到小数点右边y位的x值:round(x,[y]):
SQLServer2012新增的函数#字符串相连:--CONCAT(string_value1,string_value2[,string_valueN])SELECTCONCAT('A','BB','CCC','DDDD')--结果:ABBCCCDDDD#转换为所请求的数据类型的表达式的结果:--PARSE(string_valueASdata_type[USINGculture])SELECT
在SQLServer中,视图是一个保存的T-SQL查询。视图定义由SQLServer保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全。但是,它并不占用数据库的任何空间。实际上,在你查询它之前,视图并不做任何事情。索引视图在SQLServer2000和2005中,你能够给视图增加索引。但是,如果视图只是一个保存在数据库中的查询定义,在运行前没有自己的数据,你如何给那个定义建立一个索引
全角转半角:--full2half/*全角(Fullwidth)转换为半角(Halfwidth)*/CREATEFUNCTION[dbo].[full2half](@Stringnvarchar(max))RETURNSnvarchar(max)ASBEGINDECLARE@chrnchar(1)DECLARE@iintSET@String=REPLACE(@String,N' ',N'')SET
1、多语句表值函数--=============================================--Author:<Author,,Name>--Createdate:<CreateDate,,>--Description:<Description,,>--=============================================
1、变量表:declare@SDTdatetime,@EDTdatetimeset@SDT=getdate()--定义变量表declare@ttable(IDint,Myfieldnvarchar(50),InputDTdatetime)--插入数据到变量表insert@tselecttop10000ID,Myfield,getdate()from表set@EDT=getdate()selectD
1、SETANSI_DEFAULTS{ON|OFF}示例:SETANSI_DEFAULTSON;DBCCUSEROPTIONS;SETANSI_DEFAULTSOFF;设置SETANSI_DEFAULTSON并使用DBCCUSEROPTIONS语句显示受影响的设置。2、SETANSI_NULLS{ON|OFF}T-SQL支持在与空值进行比较时,允许比较运算符返回TRUE或FALSE。ANSI_NU
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号