SQL Server 2000基础教程——字符串函数(一)
来源:百度文库 编辑:神马文学网 时间:2024/04/27 19:43:01
SQL Server 2000基础教程——字符串函数(一)- -
字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于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 ([,length[, ]])
自变量length 和decimal 必须是非负值,length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。 小数位数大于decimal 值时,STR() 函数将其下一位四舍五入。指定长度应大于或等于数字的符号位数+小数点前的位数+小数点位数+小数点后的位数。如果小数点前的位数超过了指定的长度,则返回指定长度的“*”。
例4-44:
2、去空格函数
去空格函数有如下两种:
·LTRIM()
LTRIM() 函数把字符串头部的空格去掉,其语法如下:
LTRIM ()
例4-45:
·RTRIM()
RTRIM() 函数把字符串尾部的空格去掉,其语法如下:
RTRIM ()
例4-46:
提示:在许多情况下,往往需要得到头部和尾部都没有空格字符的字符串,这时可将上两个函数嵌套使用。
例4-47:
3、取子串函数
取子串函数如下所示:
·LEFT()
LEFT() 函数返回部分字符串,其语法如下:
LEFT (, )
LEFT() 函数返回的子串是从字符串最左边起到第integer_expression 个字符的部分。若integer_expression 为负值,则返回NULL 值。
例4-48:
·RIGHT()
RIGHT() 函数返回部分字符串,其语法如下:
RIGHT (, )
RIGHT() 函数返回的子串是从字符串右边第integer_expression 个字符起到最后一个字符的部分。若integer_expression 为负值,则返回NULL 值。
例4-49:
·SUBSTRING()
SUBSTRING() 函数返回部分字符串,其语法如下:
SUBSTRING (, , length)
SUBSTRING() 函数返回的子串是从字符串左边第starting_ position 个字符起length个字符的部分。其中表达式可以是字符串或二进制串或含字段名的表达式。SUBSTRING()函数不能用于TEXT 和IMAGE 数据类型。
例4-50:
4、字符串比较函数
字符串比较函数如下所示:
·CHARINDEX()
CHARINDEX() 函数返回字符串中某个指定的子串出现的开始位置,其语法如下:
CHARINDEX (<’substring_expression’>,)
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。此函数不能用于TEXT 和IMAGE 数据类型。
例4-51:
例4-52:
·PATINDEX()
PATINDEX() 函数返回字符串中某个指定的子串出现的开始位置,其语法如下:
PATINDEX (<’%substring _expression%’>,)
其中子串表达式前后必须有百分号“%”否则返回值为0。
例4-53:
与CHARINDEX() 函数不同的是,PATINDEX() 函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。
例4-54:
·SOUNDEX()
SOUNDEX() 函数返回一个四位字符码,其语法如下:
SOUNDEX ()
SOUNDEX() 函数将character _expression 转换为4 个字符的声音码。其中第一个码为原字符串的第一个字符,第二到第四个字符则为数字,是该字符串的声音字母所对应的数字,但是忽略了除首字母外的串中的所有元音字母 。SOUNDEX() 函数可用来查找声音相似的字符串。但SOUNDEX 函数对数字和汉字均只返回0 值。
例4-55:
·DIFFERENCE()
DIFFERENCE() 函数返回由SOUNDEX() 函数返回的两个字符表达式的值的差异。其语法如下:
DIFFERENCE (, )
值的差异是用0、 1、 2、 3、 4 来表示的,含义如下:
0--两个SOUNDEX() 函数返回值的第一个字符不同
1--两个SOUNDEX() 函数返回值的第一个字符相同
2--两个SOUNDEX() 函数返回值的第一、二个字符相同
3--两个SOUNDEX() 函数返回值的第一、二、三个字符相同
4--两个SOUNDEX() 函数返回值完全相同
例4-56:
5、字符串操作函数
字符串操作函数如下所示:
·QUOTENAME()
QUOTENAME() 函数返回被特定字符括起来的字符串,其语法如下:
QUOTENAME (<’character_expression’>[, quote_ character])
其中quote_ character 标明括字符串所用的字符,如“‘”、“(”、“[” 等,缺省值为“[]”
例4-57:
·REPLICATE()
REPLICATE() 函数返回一个重复character_expression 指定次数的字符串,其语法如下:
REPLICATE (character_expression integer_expression)
如果integer_expression 值为负值,则REPLICATE() 函数返回NULL 串。
例4-58:
·REVERSE()
REVERSE() 函数将指定的字符串的字符排列顺序颠倒,其语法如下:
REVERSE ()
其中character_expression 可以是字符串、常数或一个列的值。
例4-59:
·REPLACE()
REPLACE() 函数返回被替换了指定子串的字符串,其语法如下:
REPLACE (, , )
REPLACE() 函数用string_expression3 替换在string_expression1 中的子串string_expression2。
例4-60:
·SPACE()
SPACE() 函数返回一个有指定长度的空白字符串,其语法如下:
SPACE ()
如果integer_expression 值为负值,则SPACE() 函数返回NULL 串。
例4-61:
·STUFF()
STUF()函数用另一子串替换字符串指定位置、长度的子串,其语法如下:
STUFF (, , ,)
如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则STUFF() 函数返回NULL 值。如果length 长度大于character_expression1 的长度,则character_expression1 只保留首字符。
例4-62:
6、数据类型转换函数
在一般情况下,SQL Server 会自动完成数据类型的转换,例如,可以直接将字符数据类型或表达式与DATATIME 数据类型或表达式比较当表达式中用了INTEGER、 SMALLINT或TINYINT 时,SQL Server 也可将INTEGER 数据类型或表达式转换为SMALLINT数据类型或表达式,这称为隐式转换。如果不能确定SQL Server 是否能完成隐式转换或者使用了不能隐式转换的其它数据类型,就需要使用数据类型转换函数做显式转换了。此类函数有两个:
·CAST()
CAST() 函数语法如下:
CAST ( AS [ length ])
·CONVERT()
CONVERT() 函数语法如下:
CONVERT ([ length ], [, style])
提醒: 1、data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
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 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。如表4-8 所示。
例4-66:
7、日期函数
日期函数用来操作DATETIME 和SMALLDATETIME 类型的数据,执行算术运算。与其它函数一样,可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用日期函数。其使用方法如下:
日期函数参数,其中参数个数应不同的函数而不同。
·DAY()
DAY() 函数语法如下:
DAY ()
DAY() 函数返回date_expression 中的日期值。
例4-67:
在上例中,DAY() 函数使用整数值作参数,系统从1900 年1 月1 日起往后数指定整数值+1, 天再返回其日期。
·MONTH()
MONTH() 函数语法如下:
MONTH ()
MONTH() 函数返回date_expression 中的月份值。
例4-68:
与DAY() 函数不同的是,MONTH() 函数的参数为整数时,一律返回整数值1,即SQL Server 认为其是1900 年1 月。
例4-69:
·YEAR()
YEAR() 函数语法如下:
YEAR ()
YEAR() 函数返回date_expression 中的年份值。
例4-70:
提醒:在使用日期函数时,其日期值应在1753年到9999年之间,这是SQL Server系统所能识别的日期范围,否则会出现错误。
例4-71:
·DATEADD()
DATEADD() 函数语法如下:
DATEADD (, , )
DATEADD() 函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期。参数“datepart” 在日期函数中经常被使用,它用来指定构成日期类型数据的各组件,如年、季、月、日、星期等。其取值如表4-9 所示:
例4-72:
·DATEDIFF()
DATEDIFF() 函数语法如下:
DATEDIFF() (, , )
DATEDIFF() 函数返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。针对不同的datepart, DATEDIFF()函数所允许的最大差距值不一样,如:datepart 为second 时,DATEDIFF() 函数所允许的最大差距值为68: 年datepart 为millisecond 时,DATEDIFF() 函数所允许的最大差距值为24 天20 小时30 分23 秒647 毫秒。
例4-73: 查询在本单位工作了8 年以上的员工的姓名和所在的部门,结果按在本单位工作的时间长短排序。
·DATENAME()
DATENAME() 函数语法如下:
DATENAME (,
DATENAME() 函数以字符串的形式返回日期的指定部分此部分。由datepart 来指定。
例4-74: 查询工资大于等于7000 的员工的姓名、部门编号、工资和进入单位的年份,结果按工资高低降序排列。
·DATEPART()
DATEPART() 函数语法如下:
DATEPART (, )
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:
字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于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 (
自变量length 和decimal 必须是非负值,length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。 小数位数大于decimal 值时,STR() 函数将其下一位四舍五入。指定长度应大于或等于数字的符号位数+小数点前的位数+小数点位数+小数点后的位数。如果
例4-44:
2、去空格函数
去空格函数有如下两种:
·LTRIM()
LTRIM() 函数把字符串头部的空格去掉,其语法如下:
LTRIM (
例4-45:
·RTRIM()
RTRIM() 函数把字符串尾部的空格去掉,其语法如下:
RTRIM (
例4-46:
提示:在许多情况下,往往需要得到头部和尾部都没有空格字符的字符串,这时可将上两个函数嵌套使用。
例4-47:
3、取子串函数
取子串函数如下所示:
·LEFT()
LEFT() 函数返回部分字符串,其语法如下:
LEFT (
LEFT() 函数返回的子串是从字符串最左边起到第integer_expression 个字符的部分。若integer_expression 为负值,则返回NULL 值。
例4-48:
·RIGHT()
RIGHT() 函数返回部分字符串,其语法如下:
RIGHT (
RIGHT() 函数返回的子串是从字符串右边第integer_expression 个字符起到最后一个字符的部分。若integer_expression 为负值,则返回NULL 值。
例4-49:
·SUBSTRING()
SUBSTRING() 函数返回部分字符串,其语法如下:
SUBSTRING (
SUBSTRING() 函数返回的子串是从字符串左边第starting_ position 个字符起length个字符的部分。其中表达式可以是字符串或二进制串或含字段名的表达式。SUBSTRING()函数不能用于TEXT 和IMAGE 数据类型。
例4-50:
4、字符串比较函数
字符串比较函数如下所示:
·CHARINDEX()
CHARINDEX() 函数返回字符串中某个指定的子串出现的开始位置,其语法如下:
CHARINDEX (<’substring_expression’>,
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。此函数不能用于TEXT 和IMAGE 数据类型。
例4-51:
例4-52:
·PATINDEX()
PATINDEX() 函数返回字符串中某个指定的子串出现的开始位置,其语法如下:
PATINDEX (<’%substring _expression%’>,
其中子串表达式前后必须有百分号“%”否则返回值为0。
例4-53:
与CHARINDEX() 函数不同的是,PATINDEX() 函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。
例4-54:
·SOUNDEX()
SOUNDEX() 函数返回一个四位字符码,其语法如下:
SOUNDEX (
SOUNDEX() 函数将character _expression 转换为4 个字符的声音码。其中第一个码为原字符串的第一个字符,第二到第四个字符则为数字,是该字符串的声音字母所对应的数字,但是忽略了除首字母外的串中的所有元音字母 。SOUNDEX() 函数可用来查找声音相似的字符串。但SOUNDEX 函数对数字和汉字均只返回0 值。
例4-55:
·DIFFERENCE()
DIFFERENCE() 函数返回由SOUNDEX() 函数返回的两个字符表达式的值的差异。其语法如下:
DIFFERENCE (
值的差异是用0、 1、 2、 3、 4 来表示的,含义如下:
0--两个SOUNDEX() 函数返回值的第一个字符不同
1--两个SOUNDEX() 函数返回值的第一个字符相同
2--两个SOUNDEX() 函数返回值的第一、二个字符相同
3--两个SOUNDEX() 函数返回值的第一、二、三个字符相同
4--两个SOUNDEX() 函数返回值完全相同
例4-56:
5、字符串操作函数
字符串操作函数如下所示:
·QUOTENAME()
QUOTENAME() 函数返回被特定字符括起来的字符串,其语法如下:
QUOTENAME (<’character_expression’>[, quote_ character])
其中quote_ character 标明括字符串所用的字符,如“‘”、“(”、“[” 等,缺省值为“[]”
例4-57:
·REPLICATE()
REPLICATE() 函数返回一个重复character_expression 指定次数的字符串,其语法如下:
REPLICATE (character_expression integer_expression)
如果integer_expression 值为负值,则REPLICATE() 函数返回NULL 串。
例4-58:
·REVERSE()
REVERSE() 函数将指定的字符串的字符排列顺序颠倒,其语法如下:
REVERSE (
其中character_expression 可以是字符串、常数或一个列的值。
例4-59:
·REPLACE()
REPLACE() 函数返回被替换了指定子串的字符串,其语法如下:
REPLACE (
REPLACE() 函数用string_expression3 替换在string_expression1 中的子串string_expression2。
例4-60:
·SPACE()
SPACE() 函数返回一个有指定长度的空白字符串,其语法如下:
SPACE (
如果integer_expression 值为负值,则SPACE() 函数返回NULL 串。
例4-61:
·STUFF()
STUF()函数用另一子串替换字符串指定位置、长度的子串,其语法如下:
STUFF (
如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则STUFF() 函数返回NULL 值。如果length 长度大于character_expression1 的长度,则character_expression1 只保留首字符。
例4-62:
6、数据类型转换函数
在一般情况下,SQL Server 会自动完成数据类型的转换,例如,可以直接将字符数据类型或表达式与DATATIME 数据类型或表达式比较当表达式中用了INTEGER、 SMALLINT或TINYINT 时,SQL Server 也可将INTEGER 数据类型或表达式转换为SMALLINT数据类型或表达式,这称为隐式转换。如果不能确定SQL Server 是否能完成隐式转换或者使用了不能隐式转换的其它数据类型,就需要使用数据类型转换函数做显式转换了。此类函数有两个:
·CAST()
CAST() 函数语法如下:
CAST (
·CONVERT()
CONVERT() 函数语法如下:
CONVERT (
提醒: 1、data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
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 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。如表4-8 所示。
例4-66:
7、日期函数
日期函数用来操作DATETIME 和SMALLDATETIME 类型的数据,执行算术运算。与其它函数一样,可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用日期函数。其使用方法如下:
日期函数参数,其中参数个数应不同的函数而不同。
·DAY()
DAY() 函数语法如下:
DAY (
DAY() 函数返回date_expression 中的日期值。
例4-67:
在上例中,DAY() 函数使用整数值作参数,系统从1900 年1 月1 日起往后数指定整数值+1, 天再返回其日期。
·MONTH()
MONTH() 函数语法如下:
MONTH (
MONTH() 函数返回date_expression 中的月份值。
例4-68:
与DAY() 函数不同的是,MONTH() 函数的参数为整数时,一律返回整数值1,即SQL Server 认为其是1900 年1 月。
例4-69:
·YEAR()
YEAR() 函数语法如下:
YEAR (
YEAR() 函数返回date_expression 中的年份值。
例4-70:
提醒:在使用日期函数时,其日期值应在1753年到9999年之间,这是SQL Server系统所能识别的日期范围,否则会出现错误。
例4-71:
·DATEADD()
DATEADD() 函数语法如下:
DATEADD (
DATEADD() 函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期。参数“datepart” 在日期函数中经常被使用,它用来指定构成日期类型数据的各组件,如年、季、月、日、星期等。其取值如表4-9 所示:
例4-72:
·DATEDIFF()
DATEDIFF() 函数语法如下:
DATEDIFF() (
DATEDIFF() 函数返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。针对不同的datepart, DATEDIFF()函数所允许的最大差距值不一样,如:datepart 为second 时,DATEDIFF() 函数所允许的最大差距值为68: 年datepart 为millisecond 时,DATEDIFF() 函数所允许的最大差距值为24 天20 小时30 分23 秒647 毫秒。
例4-73: 查询在本单位工作了8 年以上的员工的姓名和所在的部门,结果按在本单位工作的时间长短排序。
·DATENAME()
DATENAME() 函数语法如下:
DATENAME (
DATENAME() 函数以字符串的形式返回日期的指定部分此部分。由datepart 来指定。
例4-74: 查询工资大于等于7000 的员工的姓名、部门编号、工资和进入单位的年份,结果按工资高低降序排列。
·DATEPART()
DATEPART() 函数语法如下:
DATEPART (
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:
SQL Server 2000基础教程——字符串函数(一)
SQL Server 2000基础教程——字符串函数(一)
SQL Server 2000基础教程——字符串函数(一)--牧固图blog
SQL Server字符串处理函数大全(转)_Delphi人生
SQL SERVER 2000系统提供的跟踪函数(一)
SQL字符串函数
Sql Server 常用函数
SQL Server基本函数
SQL Server DATEADD() 函数
SQL字符串处理函数大全
sql server日期时间函数
SQL SERVER日期函数详细用法
深入SQL SERVER 2000的内存管理机制(一)
SQL Server 2005报表服务入门(一)
求一字符串中是否包含另一字符串的函数
在SQL Server中计算ntext长度的函数
SQL Server 函数大全 - 该死的程序员 - CSDN博客
SQL Server 函数大全 - 该死的程序员 - CSDN博客
SQL Server 2000 联机丛书
SQL SERVER 2000压力测试
SQL Server 2000 联机丛书
配置SQL Server 2000安全
SQL Server 2000之日志传送功能 - 描述(1)
SQL Server 2000之日志传送功能 - 设定(1)