仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 967|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL教程之T-SQL Extractor

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:36:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
/******************************************************************************
*Author:iret
*Desc:T-SQLExtractor
*ExtractthecommentsandblanksandtabsfromtheSQLstatement
*为了对照两个存储历程,大概SQL语句是不是分歧,抽暇写了一个能够删除T-SQL语句中的正文和空格的剧本,挺精巧的模样。
*CreatedDate:2004/10/21
******************************************************************************/

DECLARE@scriptVARCHAR(8000),@extractedScriptVARCHAR(4000)
SET@script=
/*从体系表猎取存储历程的剧本*/
SELECT@script=@script+[text]
FROMsyscomments,sysobjects
WHERE
syscomments.[id]=sysobjects.[id]ANDsysobjects.[name]LIKE%campa_AppSegment

/*标记符*/
DECLARE@InLineCommentedBIT,@InSectionCommentedBIT,@InStringBIT,@positionINT

/*以后字符*/
DECLARE@curCharINT

/*前一个字符*/
DECLARE@preCharINT

SET@InLineCommented=0
SET@InSectionCommented=0
SET@InString=0

SET@extractedScript=
SET@position=1
SET@preChar=null

WHILE@position<=DATALENGTH(@script)
BEGIN
--猎取以后字符
SET@curChar=ASCII(SUBSTRING(@script,@position,1))
IF@preChar=ASCII(/)AND@curChar=ASCII(*)AND@InLineCommented=0AND@InString=0
BEGIN
--SETthesigninsectioncomment
SET@InSectionCommented=1

--popthe/char
SET@extractedScript=substring(@extractedScript,1,len(@extractedScript)-1)

SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END

IF@preChar=ASCII(*)AND@curChar=ASCII(/)AND@InLineCommented=0AND@InString=0
BEGIN
SET@InSectionCommented=0
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END

IF@preChar=ASCII(-)AND@curChar=ASCII(-)AND@InSectionCommented=0AND@InString=0
BEGIN
SET@InLineCommented=1

--popthe/char
SET@extractedScript=substring(@extractedScript,1,len(@extractedScript)-1)

SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END

IF@curChar=ASCII()AND@InString=0AND@InSectionCommented=0AND@InLineCommented=0
BEGIN
SET@InString=1
END

IF@inString=1AND@curChar=ASCII()
BEGIN
IFASCII(SUBSTRING(@script,@position+1,1))=ASCII()
BEGIN
SET@extractedScript=@extractedScript+
SET@position=@position+1
END
ELSE
BEGIN
SET@InString=0
END
END

IF@InSectionCommented=1
BEGIN
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END

IF@InLineCommented=1
BEGIN
--ifmeetstheendofthelinesettheInLineCommentedtofalse
IF@curChar=10AND@preChar=13
BEGIN
SET@InLineCommented=0
END

SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END

IF@curChar=ASCII()OR@curChar=10OR@curChar=13OR@curChar=ASCII()OR@curChar=32
BEGIN
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END

SET@extractedScript=@extractedScript+CHAR(@curChar)
SET@preChar=@curChar
SET@position=@position+1
END

--printtheresultscript
SELECT@extractedScript






如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-19 18:04:24 | 只看该作者
呵呵,这就是偶想说的
爱飞 该用户已被删除
板凳
发表于 2015-1-27 05:16:11 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-5 01:22:56 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
小女巫 该用户已被删除
5#
发表于 2015-2-11 00:29:42 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
海妖 该用户已被删除
6#
发表于 2015-3-10 22:13:12 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
不帅 该用户已被删除
7#
发表于 2015-3-17 11:10:57 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
小魔女 该用户已被删除
8#
发表于 2015-3-24 08:52:52 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表