仓酷云

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

[学习教程] MSSQL编程:字符串函数(一)

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

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

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

x
这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。如果你想要检查一张表,你通常应该没有选项地运行myisamchk或用-s或--silent选项的任何一个。字符串函数对二进制数据、字符串和表达式实行分歧的运算。此类函数感化于CHAR、VARCHAR、BINARY、和VARBINARY数据范例和能够隐式转换为CHAR或VARCHAR的数据范例。能够在SELECT语句的SELECT和WHERE子句和表达式中利用字符串函数。经常使用的字符串函数有:

1、字符转换函数
有以下几种字符转换函数:
・ASCII()
ASCII()函数前往字符表达式最左端字符的ASCII码值。ASCII()函数语法以下:


例4-40:



提示:在ASCII()函数中,纯数字的字符串可不必‘’括起来,但含别的字符的字符串必需用‘’括起来利用,不然会堕落。

・CHAR()
CHAR()函数用于将ASCII码转换为字符。其语法以下:

假如没有输出0~255之间的ASCII码值,CHAR()函数会前往一个NULL值。

例4-41:


・LOWER()
LOWER()函数把字符串全体转换为小写,其语法以下:


例4-42:


・UPPER()
UPPER()函数把字符串全体转换为年夜写,其语法以下:


例4-43:


・STR()
STR()函数把数值型数据转换为字符型数据,其语法以下:
STR(<float_expression>[,length[,<decimal>]])
自变量length和decimal必需长短负值,length指定前往的字符串的长度,decimal指定前往的小数位数。假如没有指定长度,缺省的length值为10,decimal缺省值为0。小数位数年夜于decimal值时,STR()函数将其下一名四舍五进。指定长度应年夜于或即是数字的标记位数+小数点前的位数+小数点位数+小数点后的位数。假如<float_expression>小数点前的位数凌驾了指定的长度,则前往指定长度的“*”。

例4-44:


2、往空格函数
往空格函数有以下两种:
・LTRIM()
LTRIM()函数把字符串头部的空格往失落,其语法以下:
LTRIM(<character_expression>)

例4-45:


・RTRIM()
RTRIM()函数把字符串尾部的空格往失落,其语法以下:
RTRIM(<character_expression>)

例4-46:


提醒:在很多情形下,常常必要失掉头部和尾部都没有空格字符的字符串,这时候可将上两个函数嵌套利用。

例4-47:


3、取子串函数
取子串函数以下所示:
・LEFT()
LEFT()函数前往部分字符串,其语法以下:
LEFT(<character_expression>,<integer_expression>)
LEFT()函数前往的子串是从字符串最右边起到第integer_expression个字符的部分。若integer_expression为负值,则前往NULL值。

例4-48:


・RIGHT()
RIGHT()函数前往部分字符串,其语法以下:
RIGHT(<character_expression>,<integer_expression>)
RIGHT()函数前往的子串是从字符串右侧第integer_expression个字符起到最初一个字符的部分。若integer_expression为负值,则前往NULL值。

例4-49:


・SUBSTRING()
SUBSTRING()函数前往部分字符串,其语法以下:
SUBSTRING(<expression>,<starting_position>,length)
SUBSTRING()函数前往的子串是从字符串右边第starting_position个字符起length个字符的部分。个中表达式能够是字符串或二进制串或含字段名的表达式。SUBSTRING()函数不克不及用于TEXT和IMAGE数据范例。

例4-50:


4、字符串对照函数
字符串对照函数以下所示:
・CHARINDEX()
CHARINDEX()函数前往字符串中某个指定的子串呈现的入手下手地位,其语法以下:
CHARINDEX(<’substring_expression’>,<expression>)
个中substring_expression是所要查找的字符表达式,expression可为字符串也可为列名表达式。假如没有发明子串,则前往0值。此函数不克不及用于TEXT和IMAGE数据范例。

例4-51:


例4-52:


・PATINDEX()
PATINDEX()函数前往字符串中某个指定的子串呈现的入手下手地位,其语法以下:
PATINDEX(<’%substring_expression%’>,<column_name>)
个中子串表达式前后必需有百分号“%”不然前往值为0。

例4-53:


与CHARINDEX()函数分歧的是,PATINDEX()函数的子串中可使用通配符,且此函数可用于CHAR、VARCHAR和TEXT数据范例。

例4-54:


・SOUNDEX()
SOUNDEX()函数前往一个四位字符码,其语法以下:
SOUNDEX(<character_expression>)
SOUNDEX()函数将character_expression转换为4个字符的声响码。个中第一个码为原字符串的第一个字符,第二到第四个字符则为数字,是该字符串的声响字母所对应的数字,可是疏忽了除首字母外的串中的一切元音字母。SOUNDEX()函数可用来查找声响类似的字符串。但SOUNDEX函数对数字和汉字均只前往0值。

例4-55:


・DIFFERENCE()
DIFFERENCE()函数前往由SOUNDEX()函数前往的两个字符表达式的值的差别。其语法以下:
DIFFERENCE(<character_expression1>,<character_expression2>)
值的差别是用0、1、2、3、4来暗示的,寄义以下:
0--两个SOUNDEX()函数前往值的第一个字符分歧
1--两个SOUNDEX()函数前往值的第一个字符不异
2--两个SOUNDEX()函数前往值的第1、二个字符不异
3--两个SOUNDEX()函数前往值的第1、2、三个字符不异
4--两个SOUNDEX()函数前往值完整不异

例4-56:


5、字符串操纵函数
字符串操纵函数以下所示:
・QUOTENAME()
QUOTENAME()函数前往被特定字符括起来的字符串,其语法以下:
QUOTENAME(<’character_expression’>[,quote_character])
个中quote_character标明括字符串所用的字符,如“‘”、“(”、“[”等,缺省值为“[]”

例4-57:


・REPLICATE()
REPLICATE()函数前往一个反复character_expression指定次数的字符串,其语法以下:
REPLICATE(character_expressioninteger_expression)
假如integer_expression值为负值,则REPLICATE()函数前往NULL串。

例4-58:


・REVERSE()
REVERSE()函数将指定的字符串的字符分列按次倒置,其语法以下:
REVERSE(<character_expression>)
个中character_expression能够是字符串、常数或一个列的值。

例4-59:


・REPLACE()
REPLACE()函数前往被交换了指定子串的字符串,其语法以下:
REPLACE(<string_expression1>,<string_expression2>,<string_expression3>)
REPLACE()函数用string_expression3交换在string_expression1中的子串string_expression2。

例4-60:


・SPACE()
SPACE()函数前往一个有指定长度的空缺字符串,其语法以下:
SPACE(<integer_expression>)
假如integer_expression值为负值,则SPACE()函数前往NULL串。例4-61:


・STUFF()
STUF()函数用另外一子串交换字符串指定地位、长度的子串,其语法以下:
STUFF(<character_expression1>,<start_position>,<length>,<character_expression2>)
假如肇端地位为负或长度值为负,大概肇端地位年夜于character_expression1的长度,则STUFF()函数前往NULL值。假如length长度年夜于character_expression1的长度,则character_expression1只保存首字符。
例4-62:


6、数据范例转换函数
在一样平常情形下,SQLServer会主动完成数据范例的转换,比方,能够间接将字符数据范例或表达式与DATATIME数据范例或表达式对照当表达式顶用了INTEGER、SMALLINT或TINYINT时,SQLServer也可将INTEGER数据范例或表达式转换为SMALLINT数据范例或表达式,这称为隐式转换。假如不克不及断定SQLServer是不是能完成隐式转换大概利用了不克不及隐式转换的别的数据范例,就必要利用数据范例转换函数做显式转换了。此类函数有两个:
・CAST()
CAST()函数语法以下:
CAST(<expression>AS<data_type>[length])

・CONVERT()
CONVERT()函数语法以下:
CONVERT(<data_type>[length],<expression>[,style])

提示:1、data_type为SQLServer体系界说的数据范例,用户自界说的数据范例不克不及在此利用。
2、length用于指定命据的长度,缺省值为30。
3、把CHAR或VARCHAR范例转换为诸如INT或SAMLLINT如许的INTEGER范例、了局必需是带正号(+)或负号(-)的数值。
4、TEXT范例到CHAR或VARCHAR范例转换最多为8000个字符,即CHAR或VARCHAR数据范例是最年夜长度。
5、IMAGE范例存储的数据转换到BINARY或VARBINARY范例,最多为8000个字符。
6、把整数值转换为MONEY或SMALLMONEY范例,按界说的国度的泉币单元来处置,如国民币、美圆、英镑等。
7、BIT范例的转换把非零值转换为1,并仍以BIT范例存储。
8、试图转换到分歧长度的数据范例,会截短转换值并在转换值后显现“+”,以标识产生了这类截断。

例4-63:


例4-64:


例4-65:



用CONVERT()函数的style选项能以分歧的格局显现日期和工夫。style是将DATATIME和SMALLDATETIME数据转换为字符串时所选用的由SQLServer体系供应的转换款式编号,分歧的款式编号有分歧的输入格局。如表4-8所示。


例4-66:


7、日期函数
日期函数用来操纵DATETIME和SMALLDATETIME范例的数据,实行算术运算。与别的函数一样,能够在SELECT语句的SELECT和WHERE子句和表达式中利用日期函数。其利用办法以下:
日期函数参数,个中参数个数应分歧的函数而分歧。

・DAY()
DAY()函数语法以下:
DAY(<date_expression>)
DAY()函数前往date_expression中的日期值。

例4-67:


在上例中,DAY()函数利用整数值作参数,体系从1900年1月1日起今后数指定整数值+1,天再前往其日期。

・MONTH()
MONTH()函数语法以下:
MONTH(<date_expression>)
MONTH()函数前往date_expression中的月份值。

例4-68:


与DAY()函数分歧的是,MONTH()函数的参数为整数时,一概前往整数值1,即SQLServer以为其是1900年1月。

例4-69:


・YEAR()
YEAR()函数语法以下:
YEAR(<date_expression>)
YEAR()函数前往date_expression中的年份值。

例4-70:


提示:在利用日期函数时,其日期值应在1753年到9999年之间,这是SQLServer体系所能辨认的日期局限,不然会呈现毛病。

例4-71:


・DATEADD()
DATEADD()函数语法以下:
DATEADD(<datepart>,<number>,<date>)
DATEADD()函数前往指定日期date加上指定的分外日时代隔number发生的新日期。参数“datepart”在日期函数中常常被利用,它用来指定组成日期范例数据的各组件,如年、季、月、日、礼拜等。其取值如表4-9所示:


例4-72:



・DATEDIFF()
DATEDIFF()函数语法以下:
DATEDIFF()(<datepart>,<date1>,<date2>)
DATEDIFF()函数前往两个指定日期在datepart方面的分歧的地方,即date2凌驾date1的差异值,其了局值是一个带有正负号的整数值。针对分歧的datepart,DATEDIFF()函数所同意的最年夜差异值纷歧样,如:datepart为second时,DATEDIFF()函数所同意的最年夜差异值为68:年datepart为millisecond时,DATEDIFF()函数所同意的最年夜差异值为24天20小时30分23秒647毫秒。

例4-73:查询在本单元事情了8年以上的员工的姓名和地点的部门,了局按在本单元事情的工夫是非排序。


・DATENAME()
DATENAME()函数语法以下:
DATENAME(<datepart>,<date)>
DATENAME()函数以字符串的情势前往日期的指定部分此部分。由datepart来指定。

例4-74:查询人为年夜于即是7000的员工的姓名、部门编号、人为和进进单元的年份,了局按人为上下降序分列。


・DATEPART()
DATEPART()函数语法以下:
DATEPART(<datepart>,<date>)
DATEPART()函数以整数值的情势前往日期的指定部分。此部分由datepart来指定。
DATEPART(dd,date)同等于DAY(date)
DATEPART(mm,date)同等于MONTH(date)
DATEPART(yy,date)同等于YEAR(date)

例4-75:


・GETDATE()
GETDATE()函数语法以下:
GETDATE()
GETDATE()函数以DATETIME的缺省格局前往体系以后的日期和工夫,它常作为别的函数或命令的参数利用。

例4-71:

Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
小魔女 该用户已被删除
沙发
发表于 2015-1-19 08:40:32 | 只看该作者
光写几个SQL实在叫无知。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-28 05:47:53 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
若相依 该用户已被删除
地板
发表于 2015-2-5 17:56:36 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
不帅 该用户已被删除
5#
发表于 2015-2-13 04:55:09 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
兰色精灵 该用户已被删除
6#
发表于 2015-3-3 14:59:02 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
若天明 该用户已被删除
7#
发表于 2015-3-11 11:51:44 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
再见西城 该用户已被删除
8#
发表于 2015-3-18 15:35:46 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-26 03:25:46 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 21:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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