随笔分类 - SQL语言技术
摘要:本文系转载,谢谢:http://www.cnblogs.com/cxd4321/archive/2008/12/10/1351792.html另外这个也不错http://www.cnblogs.com/buaaboyi/archive/2011/08/30/2159860.html 锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个...
阅读全文
摘要:EXCEL导入到SQL Server经常出现“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”错误的解决2011/08/05 17:55原 因是,SQL Server的导入导出为了确定数据表的字段类型,取excel文件的前8行来判别。如果前8条是少于255的字符串,则设成nvarchar(255) 类型,但如果Excel后面的记录中有长度超过255的,导入时就会出错。即使在导入设置映射时调整了该字段的长度也不行。解决的办法是改注册表如果是:Jet引擎.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel如果是:ACE引擎
阅读全文
摘要:--根据分隔符获得字符串分割的数组大小CREATE function GetStrArrayLength(@str varchar(1024), --要分割的字符串@split varchar(10) --分隔符号)returns intasbegindeclare @location intdeclare @start intdeclare @length intset @str=ltrim(rtrim(@str))set @location=charindex(@split,@str)set @length=1while @location<>0begin set @start
阅读全文
摘要:SQLServer在执行批量操作的时候内存飙升,崩溃的可能原因:在做大批量数据处理的时候,在查询分析器中执行,本地机器内存会一直升,最后内存溢出或者直接崩溃有时候执行几千条也会有这个现象偶然的测试发现,如果在批量操作的时候如果去掉所有的输出信息,文字等等,注释掉select,或者print这些。内存就会很平稳没有任何变化啊真是奇怪。。。本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。
阅读全文
摘要:看标题可能看的不明白。举例子来说A表是班级表,字段:ID=班级编号,Name=班级名字B表是学生表,字段:ID=班级编号,SID= 学生编号。就是查询班级表的全部信息,然后也要查询出来班级表对应的学生数量。在群里问问,总结有两个比较简单,清晰的方法第一个方法(城主):select a.*, (select count(*) from b where b.ID=a.id) as学生数量 from a这个看着比较清楚简单,第二个方法(泪吻星痕):select a.*,xx.人数from a, (select b.ID,count(ID) as 人数 from b group by b.ID) xx
阅读全文
摘要:update一般是做单表操作的。但是有时候某些业务下update某个表的时候,用的数据可能是其他表的数据,这个时候可以使用jion方式语句如下update a set count = a.count + b.count from a left join b on a.id=b.id
阅读全文
摘要:*普通行列转换(爱新觉罗.毓华 2007-11-18于海南三亚)假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94*/-------------------------------------------------------------------------/*想变成 姓名 语文 数学 物理 ---------- ----------- ----------- ----------- 李四 74 84 94张三 74 83 93*/createtable tb(...
阅读全文
摘要:alter proc InsertInfoToFriend@input varchar(1000),@split varchar(1)aswhile(charindex(@split,@input)<>0) begin set @uid = substring(@input,1,charindex(@split,@input)-1) --当前循环到用户id set @input =stuff(@input,1,charindex(@split,@input),'') --修改过后的输入参数--其他业务过程end本文使用Blog_Backup未注册版本导出,请到sof
阅读全文
摘要:存储过程有时候要实现比复杂的方法,其中有的手段就是要组合sql语句declare @TestSql nvarchar(1000)set @TestSql = 'select * from tablename'就像这种方式一样,当然上面的只是一个事例组合sql要先区分几种错误的概念1,对于表名,列名,字段名都是不能使用变量的。比如这个方式declare @tableName varchar(100)declare @Sql varchar(1000)set @tableName ='userinfo'set @Sql = 'select * from @t
阅读全文
摘要:最近研究康盛的Unhome,一个SNS平台软件要用到Mysql这个软件,唉,开源的东西就是麻烦,开启日志都搞了半天刚开始只搞懂了开启更新之类的sql[mysqld]log-update = "文件位置。log"但是里面只有insert,update,delete之类的sql[mysqld]log=general-log这个是开启所有的sql事件跟踪。还有一个命令是清空日志文件的,直接在文件的文件夹目录下,输入echo >general-log就可以了。前提是要把mysql服务关闭掉真是折腾本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册
阅读全文
摘要:这还是城主提出的问题,感觉很有意思,比如一个记录表products,里面有个主键id,一个类型TYPEID,就是查询出每个TYPEID的前3个记录,还有一个类型表productstype可是我sql还是太菜。还是请假了夕颜兄夕颜还是使用sql自拼接来解决这个问题。DECLARE @SQL VARCHAR(8000)SET @SQL=''SELECT @SQL=@SQL+'SELECT TOP 3 distinct typeid FROM PRODUCTS WHERE TYPEID = '''+CAST(ISNULL(TYPEID,'
阅读全文
摘要:碰到一个sql问题,不知道怎么搞,问了群里面的一个sql高手 ,夕颜大哥,他使用短短一句sql就实现我的要求,太牛了。原来sql还可以这么神奇,唉,还是怪自己sql不精通。一个表A,两个字段ID,name,一个ID可能对应多name,要求根据一个ID查询出对应的name,但是不是以多行的形式显示出来,而是以一个行的形式出来,多个name以,分割。比如 数据 i name1 a1 b1 c应该查询来的结果是; [a,b,c 1]sql是这样写的DECLARE @names varchar(1000)SET @names = ''SELECT @names=@names+ISNUL
阅读全文
摘要:很郁闷的sql语句啊。其实仔细想也很简单。反正郁闷表结构就是A,B,C3个字段查询重复的记录select count(*) ,A,B,C from testgroup by A,B,C having count(*) > 1 删除重复的记录select distinct * into #Tmp from testdrop table testselect * into test from #Tmpdrop table #Tmp
阅读全文
摘要:select * from ReceiveFileRecord where checkcompelete = 1select R.FileID, R.ReceiveDate,R.CreateUser,U.UserName,R.ComeUnitfrom ReceiveFileRecord R left join UserBase U on R.CreateUser = U.UserIDwhere checkcompelete = 1declare @TName varchar(2000)set @TName=' ReceiveFileRecord R left join UserBase
阅读全文
摘要:人家的,感觉不错,if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PaginationDisplay]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[PaginationDisplay]GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO/*按页得到信息,得到记录总条数*/CREATE procedure PaginationDisplay
阅读全文
摘要:3.SQL SERVER 2005中的新分页CREATE PROCEDURE [dbo].[Zhzuo_GetItemsPage2005] @PageIndex INT, @PageSize INT, @RecordCount INT OUT, @PageCount INT OUTAS/*获取记录数*/SELECT @RecordCount = COUNT(*) FROM Production.Product/*计算页面数据*/SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)/* 基于SQL SERVER 2005 */SELEC
阅读全文
摘要:create proc Pager@PageIndex int,@PageSize int,@PageCount int out,@RecordCount int outasselect @RecordCount= count(*) from film_typeset @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)declare @topCount intSET @topCount = @RecordCount - @PageSize * @PageIndex DECLARE @SQLSTR NVARCHAR(1000) if @Pag
阅读全文