月度归档:2014年08月

T-SQL函数类型——字符串函数

字符串函数用于处理列中的数据值,通常属于字符型的数据类型。

     1、ASCLL(character),将具体字符转换为相应的整数(ASCII)代码,结果为正数。

     例:select ASCII(“A”),结果为65

     2、CHAR(int),将ASCII代码转换为相应的字符,结果为CHAR(1).

     例:select CHAR(65),结果为A

     3、CHARINDEX(str1,str2),返回部分字符串str1在字符串str2中首次出现的起始位置。如果str1没有在str2中出现,那么返回值为0。

     例:select CHARINDEX(“world”,”hello world!”); 结果为7

select CHARINDEX("z","hello world!"); 结果为0

     4、DIFFERENCE(str1,str2),返回值为0-4(发音越相似越大,4为相同发音)之间的整数,这就是str1和str2这两个字符串SOUNDEX之间的区别。SOUNDEX返回的数字指定的是字符串的语音。这种方法能够判断有相同发音的字符串。

     例:select DIFFERENCE(“spelling”,”telling”); 结果为2

select DIFFERENCE("hello","hello");结果为4

     5、LEFT(str,length),截取str字符串length长度的字符串,当length大于str字符串的长度时,返回str。

     例:selectLEFT(“hello”,3); 结果为”hel’

select LEFT("hello",10);结果为"hello’

     6、LEN(str),放回指定的字符串表达式的字符个数,包括后面的空格。

     例:select LEN(“hello world! “); 结果为12

     7、LOWER(str),将字符串str中所有的大写字母转换成小写字母。

     例:select LOWER(“Hello”); 结果为为”hello’

     8、LTRIM(str),去掉字符串str开头的空格。

     例:select LTRIM(” Hello World  “); 结果为’Hello World  ’

     9、NCHAR(i),返回由统一码标准定义的、有指定整数代码的统一码字符。

     例:select NCHAR(65);  结果为’A’

     10、QUOTENAME(char_string),返回有分隔符的统一码字符串,使输入字符串编程有效分隔符。

     例:select QUOTENAME(“-“); 结果为‘[-]’

     11、PATINDEX(%p%,expr),返回指定表达式expr中模式p第一次出现的起始位置,如果没有找到匹配模式的,就返回0。

     例:select PATINDEX(“%e%”,”hello”); 结果为2

     12、REPLACE(str1,str2,str3),将所有str1中出现的str2替换为str3。

     例:select REPLACE(“hello”,”l”,”a”); 结果为‘heaao’

     13、REPLICATE(str,times),将字符串str重复times次。

     例:select REPLICATE(“a”,5)。结果为‘aaaaa’

     14、REVERSE(str),将字符串str显示为倒序。

     例:select REVERSE(“hello”),结果为‘olleh’

     15、RIGHT(str,length),在字符串str中截取最后length长度的字符。

     例:select RIGHT(“hello world”,5),结果为‘world’

     16、RTRIM(str),取消字符串str最后的空格。

     例:select RTRIM(” Hello World  “),结果为‘Hello World’

     17、SOUNDEX(word),返回四个字符的SOUNDEX代码判断字符中的相似性。

     例:select SOUNDEX(“spelling”); 结果为‘S315’

     18、SPACE(length),返回一个字符串,length为其指定的空间长度。

     例:select SPACE(3); 结果为‘   ’

     19、STR(f,[len [,d]],将指定的float表达式f转换为字符串。len是指定字符串的长度,包括小数点、正负号、数字和空格(默认值为10),d为小数点右边的被返回的数字。在转换过程中会使用四舍五入法。

     例:select STR(123.45678,5,2); 结果为123,5

     20、STUFF(str1,a,lenth,str2),用字符串str2中位于a处的部分字符串代替str1中的部分字符串,代替str1中length字符。

     例:select STUFF(“Hello World”,6,1,” wonderful “),结果为‘Hello wonderful World’

     21、SUBSTRING(str,index,length)。在字符串str中的index处开始截取length长度的字符串。

     例:select SUBSTRING(“Hello World”,7,6),结果为‘World’

     22、UNICODE,放回由同一定义的整数值,该值为数值表达式的第一个字符。

     例:select UNICODE(“Hello World”),结果为72,即‘H’的ASCII码

     23、UPPER(str),将字符串str中的所有字母转换为大写字母。

     例:select UPPER(“Hello”),结果为‘HELLO’

原文:http://blog.sina.com.cn/s/blog_531bb7630100wgfv.html

年薪第一的数据库工程师是怎样炼成的

编者按:

这是真人真事,相当于“口述实录”——本文作者牛新庄博士,年薪217万、曾任中信银行、山东农信、广东农信等公司资深技术顾问、中国建设银行总行特聘资深技术专家,被誉为国内年薪第一的数据库工程师。想成为IT大侠的有志青年们注意了——成才的捷径或是捡到武林秘籍,或是得到高人指点——或是研读此篇口述实录,经验值、魅力值、技能值激增800点。文章标题为编者所加。

前途在数据库

1999年,我在开始读研时就给自己确定了以后的发展方向。当时有两个方向:网络,数据库技术。因为在2000年之时,网络大热,市场上拥有CCNP、CCIE证书的人特别牛。所以我当时也考下了CCNP证书,但后来发现网络方向涉及很多硬件层面的东西,这些都对厂商的依赖性太强,个人发挥空间不大。而我喜欢钻研,所以慢慢开始转向专攻数据库技术。

在认准数据库这个方向后,我开始深入学习数据库理论方面的知识。当时,人大王珊教授的《数据库系统原理教程》一书我读了几十遍。在学习数据库理论的同时,我开始接触并深入学习DB2和 Oracle,并从1999年开始使用DB2 V5.2。那时,市场上关于DB2方面的技术书籍几乎没有,互联网也不像现在这么发达。因为我的导师做一个课题需要用到DB2数据库,但是我只能依靠查看 DB2随机文档来学习。那时,我还自己兼职,通过帮别人做些小软件赚钱,外加课题经费,以支付考OCP认证和DB2认证的费用。

我一直认为考认证是一个很好的学习动力。因为考试费用不菲,如果不想浪费钱只能拼命看书。我在读研的2000年就通过了OCP 8i认证,后来又陆续通过DB2 V5.2认证。这些认证极大地增强了我的自信。同时,在帮助导师用PB、Delphi等编程工具做应用开发时,我有意识地增强对SQL的学习,这对我后来的性能调优工作非常有帮助。

做好一个时期的人生规划非常重要。我们首先要有一个明确的努力方向和规划,然后有意识的往这个方向努力。这种积极主动的学习要比被动学习效率高很多。

从DB2数据库培训师开始

“机遇偏爱有准备的头脑”,这句话虽是老生常谈,却是人生真谛。记得2000年底,我在网上看到一个帖子说需要一个人去安装DB2数据库,差旅报销,每天500元,我喜出望外。因为这项工作需要有DB2认证才能去,而我那时DB2高级系统管理和应用开发的认证都有,所以很快就通过了对方的审核。但是当我到客户现场时才发现,不是安装DB2而是要给客户讲课,当时我就傻眼了,因为讲课需要的知识远比安装配置数据库要难得多,更何况我之前根本没有讲过课。没办法,压力也是动力,只能前一天夜里看教材备课到凌晨5点。短短睡了两个小时后,8点半去讲课。四天讲课下来,我总共休息了12个小时。还好自己毕竟有DB2应用开发经验和DB2认证做基础,总算勉强应付了过去。只是没想到的是,这次并不算顺利的培训,竟是我未来几年培训生涯的开始。

后来,IBM培训部通过一些渠道知道我能讲DB2且拥有相关证书,就找我讲授DB2系列课程。从2001年开始,我就经常作为IBM官方讲师讲授 DB2系列的所有课程。我自认为讲课是一个很好的学习过程,因为课前要深入了解概念,对于自己的理论深入学习有很大帮助。

数据库学习Tips

根据我对数据库的理解,目前市场上虽然有Oracle,DB2,Informix,Sybase和SQL Server数据库,但Informix数据库已经被IBM收购,而Sybase数据库在技术和市场上正走向没落,占据市场主要份额的就是Oracle,DB2和SQL Server数据库。SQL Server数据库非常好,但是很遗憾的是只能在 Windows平台使用。所以如果你深入研究SQL Server数据库,我只能说获取高薪的概率稍低,而且坦白的说,使用SQL Sever数据库的企业一般是中小企业居多。而国内做Oracle数据库的人太多,如果你想在Oracle领域出人头地,难度极大。但是,做DB2数据库的人反而不太多,物以稀为贵。况且,DB2数据库广泛应用在银行、电信、制造行业、零售行业、保险行业等“高薪”领域中,所以我强烈建议学习DB2数据库,做IBM技术一般获取高薪的概率相对会大一些。我们的时间精力是有限的,所以必须选择好方向然后努力为之。除了SQL Server,这几个数据库我都在使用,我个人感觉除了功能外,对于运行稳定而言,相对于Oracle不太稳定的优化器,DB2无疑是最稳定的,它的优化器无比强大。如果能在锁方面再有更先进的技术,那么DB2 将是完美的。

2002年11月,我参加了首届“IBM DeveloperWorksLive! China 2002”大会,并获得IBM首次在国内评选的“杰出软件技术专家”奖,当时在6名获奖 者中名列第2。这个奖项客观上对我在客户群的拓展方面起到很大帮助。找我解决问题的人更多了,所以2002—2003年也成了我技术提升最快的两年。

重要的一点是:学习过程中,要不断地把实践和理论融合,知其然更知其所以然,这样提升就会快很多。

现场救援记

2004—2005年是我最忙碌的两年,那时候找我讲课的培训机构和需要性能调优的客户非常多,基本上整天在天上飞。培训机构找我讲课常常需要提前一个月预约。那两年内,除了过年几天,其他时间都是在做培训和诊断、调优,足迹遍及国内主要城市。我作为国内六大银行开发中心和数据中心培训的指定讲师,并为北京银信科技、山东农信、广东农信,交行大集中IBP等项目做数据库技术顾问。

记得最刺激的一次是2004年9月的一天,上午9点为上海移动IT部门做AIX动态逻辑分区(DLPAR)培训,结束时是17点。之后,立刻坐出租车前往扬州,于20点到达扬州供电局并协助他们进行电力负荷控制系统项目上线,一直奋战到凌晨3点半。接着,又连夜乘出租车赶往上海,在凌晨6点到达酒店。休息两小时后,8点出发,准时出现在上海移动培训现场。那时我对报酬不太在意,想的主要是用心积累技术经验和客户资源。在我看来,能够不断通过实践让自己成长是第一要义。而且去的客户现场越多,处理的问题就越多,也就越多地发现自己的不足,然后再拼命学习,不断积累、总结和思考,进入了一个良性循环。

至今我仍然怀念那段充实、紧张而充满激情的光辉岁月。2004年和2005年,一方面因为以独立咨询顾问的个人身份无法出具发票;另一方面,项目越做越大,尤其是很多银行的数据库架构和维护项目涉及合同金额也越来越大,需要签订正式公司合同。于是,我就分别在上海、北京注册了公司。

当然这些年我并非都是一帆风顺,也犯过一些重大错误,例如:我曾经在2002年5月1日把海南美兰机场的数据库调死,导致机场航班信息管理系统瘫痪。早期也曾经因为调整某证券系统宕机而影响股民交易,这些都对客户造成了影响,但这些都是成长必须要走的路。经过这两次事件后,我自己也思考、总结了很多,在之后的调优工作中我基本上再没有犯过错误。

百万年薪的成功秘诀

2006年8月我获得“2006年中国首届杰出数据库工程师”称号,算是对我多年学习数据库的一个总结。自2007年开始,我专注于做一些大客户的运维工作,并相应减少了培训次数。2008年,我被建设银行以年薪217万聘请为资深技术专家来维护Oracle和Informix数据库。就做技术而言,以一己之力能挣到年薪几百万常常令我感到自豪,也让我感受到技术的魅力,觉得自己多年来对技术的钻研得到了认可。

之所以讲述我的技术之路,主要目的是给大家一些参考,尽可能多地去了解社会的需求,有意识给自己制定人生规划。我自己认为,多年来能取得这样的成绩,勤奋、努力和坚持一直是我最看重的。因为有了这些,才不至于当机遇光顾时,你却不知所措。

现在很多年轻人,恰恰缺少的就是这样的忘我与痴迷,在我熟悉的数据库技术领域,很多年轻人越来越早地将注意力集中在薪水和职位上,这是很不明智的行为。其实,往往那些将诸如高薪与职位忘怀的人反而能更快地取得成功。“不经一番寒彻骨,安得梅花扑鼻香?”这样的道理人人都懂,可能够真正去实践的人却并不多。

结合我的学习经验与感悟,我总结有16字要诀:去除浮躁,认真学习,不断积累,寻找机遇。最后,我用这句话与大家共勉:古之成大事者,不唯有超世之才,亦唯有坚韧不拔之志也!

作者简介:

牛新庄博士,研究方向为数据库和数据挖掘。是IBM官方资深培训讲师(培训DB2,AIX,MQ,WebSphere和CICS)。2002年获IBM 杰出软件专家奖,2006年获“首届中国杰出数据库工程师奖”、“2006年IT168技术卓越奖”。是中信银行、山东农信、广东农信等公司资深技术顾问,中国建设银行总行特聘资深技术专家。拥有OCP, AIX,DB2,HP-UX,MQ,CICS和WebSphere等二十多项国际认证。著有《Oracle数据库开发讲座—— Oracle9i Jdeveloper与J2EE实务应用》、《DB2应用开发实战指导》、《循序渐进DB2-系统管理、运行维护与应用案例》、《深入解析DB2-高级管理、内部体系结构与诊断案例》和《DB2性能调整与优化》等书。

原文:http://blog.sina.com.cn/s/blog_59776ced0100f6op.html