随笔分类 -  Sql

数据库相关
摘要:本文转自:http://www.dotblogs.com.tw/hunterpo/archive/2009/09/04/10421.aspxIDENT_CURRENT、SCOPE_IDENTITY 和 @@IDENTITY 是類似的系統函數,都會傳回最後插入的識別值,但是各函數定義的範圍 (Scope) 和工作階段 (Session) 各不同,以下摘自 SQL Server 2005 線上叢書的說明:IDENT_CURRENT 會傳回在任何工作階段和任何範圍中,產生給特定資料表 (叫用函數時指定) 的最後一個識別值。SCOPE_IDENTITY 會傳回在目前工作階段以及目前範圍中,任何資料表產 阅读全文
posted @ 2013-08-21 13:49 litsword 阅读(242) 评论(0) 推荐(0)
摘要:-- '%[^a-z]%'CREATE Function [dbo].[RemoveNonAlphaCharacters](@Temp VarChar(1000))Returns VarChar(1000)ASBegin While PatIndex('%[^a-z]%', @Temp) > 0 Set @Temp = Stuff(@Temp, PatIndex('%[^a-z]%', @Temp), 1, '') Return @TEmpEnd-- '%[^a-z0-9]%'CREATE Function 阅读全文
posted @ 2013-04-04 00:04 litsword 阅读(22612) 评论(0) 推荐(1)
摘要:DECLARE@FullName VARCHAR(100)SET@FullName ='David'SELECTSUBSTRING(@FullName, 1,NULLIF(CHARINDEX(' ', @FullName)- 1,-1))AS [FirstName],SUBSTRING(@FullName,CHARINDEX(' ', @FullName)+ 1,LEN(@FullName))AS [LastName] 阅读全文
posted @ 2012-11-28 17:44 litsword 阅读(199) 评论(0) 推荐(0)
摘要:C#有个函数PadLeft函数:右对齐此实例中的字符,在左边用空格或指定的 Unicode 字符填充以达到指定的总长度。SQL中我们也可能有这种需求.比如字符串希望保持7位不足7位前面用0补全.1--------0000001109------00001090987-----0000987解决方案1:使用RIGHT,REPLICATE函数CREATEFUNCTIONdbo.PadLeft (@lenint,@stringVARCHAR(max),@padcharCHAR(1))RETURNSVARCHAR(255)ASBEGINRETURNRIGHT(REPLICATE(@padchar,@l 阅读全文
posted @ 2012-02-10 16:02 litsword 阅读(379) 评论(0) 推荐(0)
摘要:update的格式是:update table1set table1.name=’abc’ from table1inner join table2on table1.id = table2.idwhere table2.number = '123'delete 的格式是:delete from table1 from table1 inner join table2 on table1.id = table2.id注意蓝色部分,这样就可以省掉复杂的中间表了^_^ 阅读全文
posted @ 2011-10-14 09:06 litsword 阅读(2449) 评论(0) 推荐(0)
摘要:今天遇到一个错误,自己一直没有意思到这样写是错误的。在游标循环过程中使用变量要注意declare @a;select @a =column1 from table1 where column2 = '123'if @a is nullbeginend原以为如果找不到'123'的记录,变量@a 会被赋成null,可事实上,@a 会保留上一次loop取到的有效值(即非null的历史值)应该改为set @a = select column1 from table1 where column2 = '123'这样才能在找不到记录时正确将@a设置为null 阅读全文
posted @ 2011-10-14 09:02 litsword 阅读(845) 评论(0) 推荐(0)
摘要:-- 显示当前日期SELECT CONVERT (VARCHAR(20), GETDATE(), 101)-- 显示当前时间SELECT CONVERT (VARCHAR(20), GETDATE(), 108) 阅读全文
posted @ 2011-09-27 16:28 litsword 阅读(217) 评论(0) 推荐(0)
摘要:转自http://www.yesky.com/imagesnew/software/tsql/ts_sa-ses_6n8p.htmSCOPE_IDENTITY返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。语法SCOPE_IDENTITY( )返回类型sql_variant注释SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 在功能上相似,因为它们都返回插入到 IDENTITY 列中的值。I 阅读全文
posted @ 2011-08-30 18:51 litsword 阅读(447) 评论(0) 推荐(0)
摘要:/* --Desc: 在计算员工当前日期的生日时,需要考虑闰年的问题, 一般在2月29号出生的人在非闰年时生日在3月1号过。 --Environment: SQL SERVER 2008 --Author: Learnsql*/USE Tempdb;GO--创建测试表CREATE TABLE #Employee( [Name] NVARCHAR(10), BirthDay DATETIME);GO --插入数据INSERT INTO #Employee([Name],BirthDay) VALUES('Tom','1970-1-3');INSERT INTO # 阅读全文
posted @ 2011-08-25 14:18 litsword 阅读(3657) 评论(2) 推荐(1)
摘要:nchar与char是相似的,nvarchar与varchar是相似的。char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义 char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不够的字符用空格去填。因为是固定长度,所以速度效率高。 Varchar类型:Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"而char 不一样,比如char(100),它的值是" 阅读全文
posted @ 2010-08-24 11:59 litsword 阅读(4506) 评论(3) 推荐(0)
摘要:数据缓存:一定周期内经常使用的数据(不经常变化)缓存在程序服务器内存,当数据源数据发生改变时才从内存中清楚除,以最大化获取缓存带来性能上的优势。SQL 提供了两种方式来判断数据库中的数据在什么时候修改过。A、 Notification (Sql 主动通知)B、 Polling (一定时间间隔查询数据库获取通知)Service Broker: SELECT name, is_broker_enabl... 阅读全文
posted @ 2010-07-15 17:01 litsword 阅读(361) 评论(0) 推荐(0)
摘要:在查询中执行下列语句 EXEC sp_attach_single_file_db @dbname = 'testdb', @physname = 'E:\Test\testdb.MDF' 注:'testdb' 为恢复的数据库名 'E:\Test\testdb.MDF' 为MDF文件的物理路径 阅读全文
posted @ 2009-02-02 14:32 litsword 阅读(929) 评论(0) 推荐(0)