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 NULL THEN 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 值应在前记录

你可能感兴趣的:(SQL,Server,sql,server,character,integer,null,date,database)