T-sql函数

1、 ()
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 串。
字符转换函数
有以下几字符转换函数:
·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

  4-61


·STUFF
()
STUF
()函数用另一子串替换字符串指定位置、长度的子串,其语法如下:
STUFF

如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则STUFF() 函数返回NULL 值。如果length 长度大于character_expression1 的长度,则character_expression1 只保留首字符。

  4-62


6、数据转换函数
在一般情况下,SQL Server 会自动完成数据类型的转换,例如,可以直接将字符数据类型或表达式与DATATIME 数据类型或表达式比较当表达式中用了INTEGER SMALLINTTINYINT 时,SQL Server 也可将INTEGER 数据类型或表达式转换为SMALLINT数据类型或表达式,这称为隐式转换。如果不能确定SQL Server 是否能完成转换或者使用了不能转换的其它数据型,就需要使用数据转换数做转换了。此函数有两个:
·CAST
()
CAST
() 函数法如下:
CAST
AS [ length]

·CONVERT
()
CONVERT
() 函数法如下:
CONVERT
[ length] [ style]

提醒: 1data_typeSQL Server的数据型,用自定的数据型不能在此使用。
2
length用于指定数据的度,缺省值为30
3
、把CHARVARCHAR转换为诸INTSAMLLINT这样INTEGER型、果必正号(+)或号(-)的数
4TEXT类型到CHARVARCHAR类型转换最多为8000个字符,即CHARVARCHAR数据类型是最大长度。
5IMAGE型存的数据转换BINARYVARBINARY型,最多8000个字符。
6
、把整数值转换为MONEYSMALLMONEY型,按定的国家的货币单位来理,如人民、美元、英等。
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
 

8、系函数
函数用于取有关计算机系、用、数据和数据库对象的信息。系函数可以在得到信息后,使用条件句,根据返回的信息行不同的操作。与其它函数一,可以在SELECT 句的SELECT WHERE 子句以及表达式中使用系函数。

·APP_NAME
()
APP_NAME
() 函数法如下:
 APP_NAME
()
APP_NAME
() 函数返回当前行的用程序的名称。其返回值类nvarchar 128)。

  
4-77 测试当前用程序是否SQL Server Query Analyzer


·COALESCE
()
COALESCE
() 函数法如下:
COALESCE
[ ...n]
COALESCE
() 函数返回众多表达式中第一个非NULL 表达式的。如果所有的表达式均NULL COALESCE() 函数返回NULL COALESCE() 函数等效于下面的CASE 句:

CASE
WHEN
expression1 IS NOT NULL THEN expression1

WHEN expressionN IS NOT NULLTHEN expression
ELSE NULL

  
4-78


·COL_LENGTH
()
COL_LENGTH
() 函数语法如下:
 COL_LENGTH
<&apostable_name&apos> <&aposcolumn_name&apos>
COL_LENGTH
() 函数返回表中指定字段的长度值。其返回值为INT 类型。

  
4-79


·COL_NAME
()
COL_NAME
() 函数语法如下:
 COL_NAME

COL_NAME
() 函数返回表中指定字段的名称,即列名。其返回值为SYSNAME 类型。其中table_id column_id 都是INT 类型的数据,函数用table_id column_id 参数来生成列名字符串。关于如何获得table_id column_id, 请参见OBJECT_ID() 函数。

  
4-80



·DATALENGTH
()
DATALENGTH
() 函数语法如下:
DATALENGTH

DATALENGTH
() 函数返回数据表达式的数据的实际长度。其返回值类型为INTDATALENGTH() 函数对VARCHAR VARBINARY TEXT IMAGE NVARCHARNTEX 等能存储变动长度数据的数据类型特别实用。NULL 的长度为NULL

  
4-81


· DB_ID
()
DB_ID
() 函数语法如下:
DB_ID
[&aposdatabase_name&apos]
DB_ID
() 函数返回数据库的编号。其返回值为SMALLINT 类型。如果没有指定database_name, 则返回当前数据库的编号。

  
4-82



·DB_NAME
()
DB_NAME()
函数语法如下:
DB_NAME (database_id)
DB_NAME()
函数返回数据库的名称.其返回值类型为NVARCHAR (128). database_idSMALLINT 类型的数据.如果没有指定database_id, 则返回当前数据库的名称.

  
4-83:


· FORMATMESSAGE()
FORMATMESSAGE()
函数语法如下:
 FORMATMESSAGE ( , [, ...n])
FORMATMESSAGE()
函数用于从系统信息表sysmessages 中挑选一条现存的信息,
再将其格式转换为用户需要的形式.其功能类似于RAISERROR 命令,不同的是RAISERROR命令立即打印出信息,FORMATMESSAGE() 函数返回编辑过的信息给调用它的程序.其返回值类型为NVARCHAR.
其中message_number 是存储在sysmessages 系统表中的信息ID .param_value 是在信息中使用的参数.最多可使用20 个参数.
FORMATMESSAGE()
函数查找使用当前语言平台语言的信息,如果没有本地语言的信息,则使用U.S. English 版本语言的信息.

  
4-84: 假定有一个编号为10001 的信息存储在sysmessages 表中,此信息的内容为"The Length of rows %column_name in %table_name is %column_num.".FORMATMESSAGE() 函数用值myColumn myTable 20分别替代上述参数值,将结果存储在变量@test1 .程序如下:
declare @test1 varchar (100)
select @test1 = formatmessage (10001, &aposmyColumn&apos, &aposmyTable&apos, 20)

·GETANSINULL()
GETANSINULL()
函数语法如下:
 GETANSINULL() ([&aposdatabase_name&apos])
GETANSINULL()
函数返回当前数据库默认的NULL .其返回值类型为INT.GETANSINULL() 函数对ANSI 空值NULL 返回1; 如果没有定义ANSI 空值,则返回0.

  
4-85:
select getansinull (&apospangu&apos)
运行结果如下:
------
1

·HOST_ID()
HOST_ID()
函数语法如下:
 HOST_ID()
HOST_ID()
函数返回服务器端计算机的名称.其返回值类型为NCHAR.

  
4-86:
declare @hostID char (8)
select @hostID = host_id()
print @hostID
运行结果如下:
-606771

·HOST_NAME()
HOST_NAME()
函数语法如下:
 HOST_NAME()
HOST_NAME()
函数返回服务器端计算机的名称.其返回值类型为CHAR (8).

4-87:
declare @hostNAME nchar (20)
select @hostNAME = host_name()
print @hostNAME

运行结果如下:
XUJIN

·IDENTITY()
IDENTITY()
函数语法如下:
IDENTITY ( [, seed, increment]) [AS column_name])
IDENTITY()
函数只在SELECT...INTO 语句中使用,用于插入一个identity column列到新表中.其返回值类型与data_type 的类型相同.

其中:
data_type
指定数据类型.data type INTEGER DECIMAL 类的数据类型.Seed指定identity column 的初值,即第一个值.Increment 指定增加一个记录时,记录的identity column 值应在前记录的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值