SQL SERVER2008函数大全

SQL SERVER2008函数大全
SQL SERVER2008函数大全

SQL Server2008函数大全(完整版)

SQL2008表达式:是常量、变量、列或函数等与运算符的任意组合。

一、字符串函数

函数名称参数示例说明

ascii(字符串表达式)

select ascii('abc')返回97

说明:返回字符串中最左侧的字符的ASCII码。

char(整数表达式)

select char(100)返回d

说明:把ASCII码转换为字符。

介于0和255之间的整数。如果该整数表达式不在此范围内,将返回

NULL值。

charindex(字符串表达式1,字符串表达式2[,整数表达式])instr

select charindex('ab','BCabTabD')返回3

select charindex('ab','BCabTabD',4)返回6

说明:在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。可以指定在字符串2中查找的起始位置。

patindex(字符串表达式1,字符串表达式2)

select patindex('%ab%','123ab456')返回4

select patindex('ab%','123ab456')返回0

select patindex('___ab%','123ab456')返回1

select patindex('___ab_','123ab456')返回0

说明:在字符串表达式1中可以使用通配符,此字符串的第一个字符和最后一个字符通常是%。%表示任意多个字符,_表示任意字符返回字符串表达式2中字符串表达式1所指定模式第一次出现的起始位置。没有找到返回0。

difference(字符串表达式1,字符串表达式2)

select difference('Green','Greene')返回4

返回一个0到4的整数值,指示两个字符表达式的之间的相似程度。

0表示几乎不同或完全不同,

4表示几乎相同或完全相同。

说明:注意相似并不代表相等

left(字符串表达式,整数表达式)

select left('abcdefg',2)返回ab

说明:返回字符串中从左边开始指定个数的字符。

right(字符串表达式,整数表达式)

select right('abcdefg',2)返回fg

说明:返回字符串中从右边开始指定个数的字符。

len(字符串表达式)

select len('abcdefg')返回7

select len('abcdefg')返回7

说明:返回指定字符串表达式的字符数,其中不包含尾随空格。

lower(字符串表达式)lcase

select lower('ABCDEF')返回abcdef

说明:返回大写字符数据转换为小写的字符表达式。

upper(字符串表达式)ucase

select upper('abcdef')返回ABCDEF

说明:返回小写字符数据转换为大写的字符表达式。

ltrim(字符串表达式)

select ltrim('abc')返回abc

说明:返回删除了前导空格之后的字符表达式。

rtrim(字符串表达式)

select rtrim('abc')返回abc

说明:返回删除了尾随空格之后的字符表达式。

reverse(字符串表达式)

select reverse('abcde')返回edcba

说明:返回指定字符串反转后的新字符串

space(整数表达式)

select'a'+space(2)+'b'返回a b

说明:返回由指定数目的空格组成的字符串。

str(float型小数[,总长度[,小数点后保留的位数]])

select str(123.451)返回123(123前面有空格)

select str(123.451,3)返回123

select str(123.451,7,3)返回123.451

select str(123.451,7,1)返回123.5

select str(123.451,5,3)返回123.5

select str(123.651,2)返回**

说明:返回由数字转换成的字符串。返回字符数不到总长度的前面补空格,超过总长度的截断小数位。如果需要截断整数位则返回**。

注意在截断时遵循四舍五入总长度。它包括小数点、符号、数字以及空格。默认值为10。小数点后最多保留16位。默认不保留小数点后面的数字。

stuff(字符串表达式1,开始位置,长度,字符串表达式2)

select stuff('abcdef',2,2,'123')

返回a123def

说明:在字符串表达式1.中在指定的开始位置删除指定长度的字符,并在指定的开始位置处插入字符串表达式2返回新字符串。

substring(字符串表达式,开始位置,长度)mid

select substring('abcdef',2,2)返回bc

说明:返回子字符串

replace(字符串表达式1,字符串表达式2,字符串表达式3)

Select replace('abcttabchhabc','abc','123')

返回123tt123hh123

说明:1.用字符串表达式3替换字符串表达式1中出现的所有字符串表达式2的匹配项。返回新的字符串。

二、日期和时间函数

函数名称

参数示例说明

dateadd(日期部分,数字,日期)

select dateadd(year,45,'1990-12-11')

返回2035-12-1100:00:00.000

select dateadd(month,45,'1990-12-11')

返回1994-09-1100:00:00.000

select dateadd(mm,45,'1990-12-11')

返回1994-09-1100:00:00.000

select dateadd(qq,12,'1990-12-11')

返回1993-12-1100:00:00.000

select dateadd(hh,12,'1990-12-11')

返回1990-12-1112:00:00.000

select dateadd(yy,-12,'1990-12-11')

返回1978-12-1100:00:00.000

返回给指定日期加上一个时间间隔后的新的日期值。

数字:用于与指定的日期部分相加的值。如果指定了非整数值,

则将舍弃该值的小数部分,舍弃时不遵循四舍五入。

日期:指定的原日期

在此函数中

dw,dy,dd效果一样都表示天

datediff(日期部分,开始日期,结束日期)datedif select datediff(yy,'1990-12-11','2008-9-10')

说明:返回两个指定日期的指定日期部分的差的整数值。在计算时由结束日期减去开始日期

返回18

Select datediff(mm,'2007-12-11','2008-9-10')

返回9

在此函数中dw,dy,dd效果一样都表示天datename(日期部分,日期)

select datename(mm,'2007-12-11')返回12

select datename(dw,'2007-12-11')返回星期二

select datename(dd,'2007-12-11')返回11

说明:返回表示指定日期的指定日期部分的字符串。

dw表示一星期中星期几,wk表示一年中的第几个星期dy表示一年中的第几天

datepart(日期部分,日期)

select datepart(mm,'2007-12-11')返回12

select datepart(dw,'2007-12-11')返回3

select datepart(dd,'2007-12-11')返回11

说明:返回表示指定日期的指定日期部分的整数。

wk表示一年中的第几个星期

dy表示一年中的第几天,

dw表示一星期中星期几,返回整数默认1为星期天getdate无参数date

select getdate()

返回2009-04-2818:57:24.153

说明:返回当前系统日期和时间。

day(日期)

select day('2007-12-11')返回11

说明:返回一个整数,表示指定日期的天的部分。

等价于

datepart(dd,日期)

month(日期)

select month('2007-12-11')返回12

说明:返回一个整数,表示指定日期的月的部分。

等价于

datepart(mm,日期)

year(日期)

select year('2007-12-11')返回2007

返回一个整数,表示指定日期的年的部分。

等价于

datepart(yy,日期)

getutcdate无参数

select getutcdate()

返回2009-04-2810:57:24.153

说明:返回表示当前的UTC(世界标准时间)时间。即格林尼治时间(GMT)。

三、日期部分(指定要返回新值的日期的组成部分。下表列出了Microsoft SQL Server2008可识别的日期部分及其缩写。)

日期部分

含义

缩写year年yy,yyyy

quarter季qq,q

month月mm,m

dayofyear天(请看函数中的说明)dy,y

day天(请看函数中的说明)dd,d

week星期wk,ww

weekday天(请看函数中的说明)dw,w

hour小时hh

minute分钟mi,n

second秒ss,s

millisecond毫秒ms

四、数学函数

函数名称参数示例说明

abs(数值表达式)

select abs(-23.4)返回23.4

说明:返回指定数值表达式的绝对值(正值)

pi无参数

select pi()返回3.14159265358979

说明:返回π的值

cos(浮点表达式)

select cos(pi()/3)返回0.5

说明:返回指定弧度的余弦值

sin(浮点表达式)

select sin(pi()/6)返回0.5

说明:返回指定弧度的正弦值

cot(浮点表达式)

select cot(pi()/4)返回1

说明:返回指定弧度的余切值。

tan(浮点表达式)

select tan(pi()/4)返回1

说明:返回指定弧度的正切值。

acos(浮点表达式)

select acos(0.5)返回1.0471975511966

说明:返回其余弦是所指定的数值表达式的弧度,求反余弦。

asin(浮点表达式)

select asin(0.5)返回0.523598775598299

说明:返回其正弦是所指定的数值表达式的弧度,求反正弦。

atan(浮点表达式)

select atan(1)返回0.785398163397448

返回其正切是所指定的数值表达式的弧度,求反正切。

degrees(数值表达式)

select degrees(pi()/4)返回45

说明:返回以弧度指定的角的相应角度。

radians(数值表达式)

select radians(180.0)

返回3.1415926535897931

说明:返回指定度数的弧度值。注意如果传入整数值则返回的结果将。会省略小数部分

exp(浮点表达式)

select exp(4)返回54.5981500331442

返回求

e的指定次幂,e=2.718281…

log(浮点表达式)

select log(6)返回1.79175946922805

说明:返回以e为底的对数,求自然对数。

Log10(浮点表达式)

select log10(100)返回2

返回以10为底的对数

ceiling(数值表达式)

select ceiling(5.44)返回6

select ceiling(-8.44)返回-8

说明:返回大于或等于指定数值表达式的最小整数。

floor(数值表达式)

select floor(5.44)返回5

select floor(-8.44)返回-9

说明:返回小于或等于指定数值表达式的最大整数。

power(数值表达式1,数值表达式2)

select power(5,2)返回25

说明:返回数值表达式1的数值表达式2次幂

sqrt(数值表达式)

select sqrt(25)返回5

说明:返回数值表达式的平方根

sign(数值表达式)

select sign(6)返回1

select sign(-6)返回-1

select sign(0)返回0

说明:表达式为正返回+1,表达式为负返回-1,表达式为零返回0。

rand([整数表达式])

select rand(100)返回0.715436657367485

select rand()返回0.28463380767982

select rand()返回0.0131039082850364

说明:返回从0到1之间的随机float值。整数表达式为种子,使用相同的种子产生随机数相同。即使用同一个种子值重复调用RAND()会返回相同的结果。不指定种子则系统会随机生成种子。

round(数值表达式[,长度[,操作方式]])

select round(1236.555,2)返回1236.560

select round(1236.555,2,1)返回1236.550

select round(1236.555,0)返回1237.000

select round(1236.555,-1)返回1240.000

select round(1236.555,-1,1)返回1230.000

select round(1236.555,-2)返回1200.000

select round(1236.555,-3)返回1000.000

select round(1236.555,-4)返回0.000

select round(5236.555,-4)出现错误

select round(5236.555,-4,1)返回0.000

说明:返回一个数值,舍入到指定的长度。注意返回的数值和原数值的总位数没有变化。长度:舍入精度。如果长度为正数,则将数值舍入到长度指定的小数位数。如果长度为负数,则将数值小数点左边部分舍入到长度指定的长度。注意如果长度为负数并且大于小数点前的数字个数,则将返回0。如果长度为负数并且等于小数点前的数字个数且操作方式为四舍五入时,最前面的一位小于5返回0,大于等于5导致错误出现,如果操作方法不是四舍五入时则不会出现错误,返回结果一律为0。

操作方式:默认为0遵循四舍五入,指定其他整数值则直接截断。

五、数据类型转换函数

(以下两种函数功能类似,但是convert在进行日期转换时还提供了丰富的样式,cast只能进行普通的日期转换)。

函数名称参数示例描述

convert(数据类型[(长度)],表达式[,样式])

select convert(nvarchar,123)返回123

select N'年龄:'+convert(nvarchar,23)

返回年龄:23(注意:如果想要在结果中正确显示中文需要在给定的字符串前面加上N,加N是为了使数据库识别Unicode字符)。

select convert(nvarchar,getdate())

说明:将一种数据类型的表达式显式转换为另一种数据类型的表达式。长度:如果数据类型允许设置长度,可以设置长度,例如varchar(10)样式:用于将日期类型数据转换为字符数据类型的日期格式的样式。见下表

返回0428200910:21PM

select convert(nvarchar,getdate(),101)

返回04/28/2009

select convert(nvarchar,getdate(),120)

返回2009-04-2812:22:21

Select convert(nvarchar(10),getdate(),120)

返回2009-04-28

cast(表达式as数据类型[(长度)])

select cast(123as nvarchar)返回123

select N'年龄:'+cast(23as nvarchar)

返回年龄:23

说明:将一种数据类型的表达式显式转换为另一种数据类型的表达式。日期类型数据转为字符数据类型的日期格式的部分样式表当两个不同数据类型的表达式用运算符组合后,数据类型优先级规则指定将优先级较低的数据类型优先转换为优先级较高的型。如果此转换不是所支持的隐式转换,则返回错误。当两个操作数表达式具有相同的数据类型时,运算的结果便为该数据类型。如果需要把优先级高的数据类型转换优先级低的数据类型时需要使用数据类型转换函数进行显示转换。

SQL Server2005对数据类型使用以下优先级顺序(先高后低):

不带世纪数位(yy)

带世纪数位(yyyy)

标准

输入/输出-

0或100

默认设置mon dd yyyy hh:miAM(或PM)1101

美国

mm/dd/yyyy2102ANSI yy.mm.dd3103

英国/法国

dd/mm/yy4104

德国

dd.mm.yy5105

意大利

dd-mm-yy120

ODBC规范

yyyy-mm-dd hh:mi:ss(24h)

1、用户定义数据类型(最高)

2、sql_variant

3、xml

4、datetime

5、smalldatetime

6、float

7、real

8、decimal

9、money10、smallmoney11、bigint12、int13、smallint 14、tinyint15、bit16、ntext17、text18、image19、timestamp20、uniqueidentifier

21、nvarchar(包括nvarchar(max))22、nchar23、varchar(包括varchar(max))24、char25、varbinary(包括varbinary(max))26、binary(最低)

系统函数

函数名称参数示例描述

newid无参数

select newid()

返回2E6861EF-F4DB-4FFE-85EA-638242F2E5F2

select newid()

返回09BBDE6F-47C2-4E2E-81E8-AFC50592280C

返回一个GUID(全局唯一表示符)值

isnumeric(任意表达式)

select isnumeric(1111)返回1

select isnumeric('123rr')返回0

select isnumeric('123')返回1

判断表达式是否为数值类型或者是否可以转换成数值。是返回1,不是返回0

isnull(任意表达式1,任意表达式2)

select isnull(null,N'没有值')返回没有值

select isnull(N'具体的值',N'没有值')

返回具体的值

如果任意表达式1不为NULL,则返回它的值;否则,在将任意表达式2的类型转换为任意表达式1的类型(如果这两个类型不同)后,返回任意表式2的值。

isdate(任意表达式)

select isdate(getdate())返回1

select isdate('1988-1-1')返回1

select isdate('198')返回0

确定输入表达式是否为有效日期或可转成有效的日期。是返回1,不是返回0

排名函数

排名函数的常用使用格式:函数名()over(order by列名[asc|desc][,列名……])

注意:返回结果集会根据使用排名函数时指定的列进行排序,因此不要在from子句后面再次使用order by,会导致排名混乱。

函数名称

参数示例描述

row_number无参数

select roductID,[Name],ListPrice,row_number()

over(order by ListPrice desc)as rank

from Production.Product

说明:为结果集内每一行进行编号,从1开始后面行依次加1。

rank无参数

select ProductID,[Name],ListPrice,rank()

over(order by ListPrice desc)as rank

from Production.Product

说明:如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名不连续。例如,如果有价格最高的两种产品的价格相同,它们将列第一。由于已有两行排名在前,所以具有下一个最高价格的产品将排名第三。该排名等于该行之前的所有行数加一。因此,RANK函数并不总返回连续整数。

dense_rank无参数

select ProductID,[Name],ListPrice,dense_rank()

over(order by ListPrice desc)as rank

from Production.Product

说明:如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名连续。例如,如果有价格最高的两种产品的价格相同,它们将并列第一,下一个最高价格的产品将排名第二。因此,DENSE_RANK函数返回的数字没有间断,并且始终具有连续的排名。

聚合函数

聚合函数对一组值执行计算,并返回单个值。除了COUNT以外,聚合函数都会忽略空值。聚合函数经常与SELECT语句的GROUP BY子句一起使用。聚合函数的常用使用格式:函数名([all|distinct]表达式)

all:默认值,对所有的值进行聚合函数运算包含重复值。distinct:消除重复值后进行聚合函数运算。

函数名称示例描述

avg

SELECT avg(VacationHours)as'平均休假小时数'FROM HumanResources.Employee WHERE Title LIKE'Vice President%'

返回25

说明:返回组中各值的平均值。空值将被忽略。表达式为数值表达式。

count

SELECT count(*)FROM Production.Product返回504

SELECT count(Color)FROM Production.Product返回256

SELECT count(distinct Color)FROM Production.Product

返回9

说明:返回组中的项数。COUNT(*)返回组中的项数。包括NULL值和重复项。如果指定表达式则忽略空值。表达式为任意表达式。

min

select min(ListPrice)from Production.Product返回0

说明:返回组中的最小值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。max

select max(ListPrice)from Production.Product

返回3578.27

说明:返回组中的最大值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。sum

SELECT sum(SickLeaveHours)as'总病假小时数'

FROM HumanResources.Employee

WHERE Title LIKE'Vice President%';返回97

说明:返回组中所有值的和。空值将被忽略。表达式为数值表达式

SQLServer(多语句表值函数代码)

SQLServer(多语句表值函数代码) 代码如下: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE FUNCTION [dbo].[ufnGetContactInformation](@ContactID int) RETURNS @retContactInformation TABLE ( -- Columns returned by the function [ContactID] int PRIMARY KEY NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, [JobTitle] [nvarchar](50) NULL, [ContactType] [nvarchar](50) NULL ) AS -- Returns the first name, last name, job title and contact type for the specified contact. BEGIN

DECLARE @FirstName [nvarchar](50), @LastName [nvarchar](50), @JobTitle [nvarchar](50), @ContactType [nvarchar](50); -- Get common contact information SELECT @ContactID = ContactID, @FirstName = FirstName, @LastName = LastName FROM [Person].[Contact] WHERE [ContactID] = @ContactID; SET @JobTitle = CASE -- Check for employee WHEN EXISTS(SELECT * FROM [HumanResources].[Employee] e WHERE e.[ContactID] = @ContactID) THEN (SELECT [Title] FROM [HumanResources].[Employee] WHERE [ContactID] = @ContactID) -- Check for vendor

列举SQLServer几个基本的函数的应用.docx

-聚合函数 use pubs go select avg(distinct price) 一算平均数 from titles where type=*business' go use pubs go select max(ytd_sales) 一最大数 from titles go use pubs go select min(ytd_sales)"最小数 from titles go use pubs go select type,sum(price),sum(adva nee) —求和 from titles group by type order by type go use pubs go select count(distinct city) 一求个数 from authors go use pubs go select stdev(royalty) ■■返回给定表达式中所有值的统计标准偏差from titles go use pubs go select stdevp(royalty)-返回表达式中所有制的填充统计标准偏差

from titles go use pubs go select var(royalty)"返回所有值的统计方差 from titles go use pubs go select varp(royalty)-返回所有值的填充的统计方差 from titles go -数学函数 select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) 一其中rand 是获得一个随机数 -配置函数 SELECT @@VERSION 一获取当前数据库版本 SELECT @@LANGUAGE -当前语言 -时间函数 select getdate() as 'wawa_getdate' 一当前时间 select getutcdate() as !wawa_getutcdate' 一获取utc 时间 select day(getdate()) as 'wawa_day' 一取出天 select month(getdate()) as 'wawa_month' 一取岀月 select year(getdate()) as 'wawa_year' 一取出年 select dateadd(d,3,getdate()) as wawa_dateadd ?■力口三天,注意'd‘表示天,'m'表示月,yy表示年,下而一样 select datediff(d,*2004-07-01 *,*2004-07-15') as wawa_datediff 一计算两个时间的差 select datename(d,*2004-07-15!) as wawa_datename "取岀时间的某一部分select datepart(d,getdate()) as wawa_datepart 一取出时间的某一部分,和上面的那个差不多 "字符串函数 select ascii(123) as ,123',ascii('123') as ,H123m,ascii(,abc,) as H,abc M,一转换成ascii 码 select char(123),char(321 ),char(-123) ?■根据ascii 转换成字符 select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc') 一转换大小写 select str(123.45,6,1), str(123.45,2,2) 一把数值转换成字符串

SQL SERVER2008函数大全

SQL Server2008函数大全(完整版) SQL2008表达式:是常量、变量、列或函数等与运算符的任意组合。 一、字符串函数 函数名称参数示例说明 ascii(字符串表达式) select ascii('abc')返回97 说明:返回字符串中最左侧的字符的ASCII码。 char(整数表达式) select char(100)返回d 说明:把ASCII码转换为字符。 介于0和255之间的整数。如果该整数表达式不在此范围内,将返回 NULL值。 charindex(字符串表达式1,字符串表达式2[,整数表达式])instr select charindex('ab','BCabTabD')返回3 select charindex('ab','BCabTabD',4)返回6 说明:在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。可以指定在字符串2中查找的起始位置。 patindex(字符串表达式1,字符串表达式2) select patindex('%ab%','123ab456')返回4 select patindex('ab%','123ab456')返回0 select patindex('___ab%','123ab456')返回1 select patindex('___ab_','123ab456')返回0 说明:在字符串表达式1中可以使用通配符,此字符串的第一个字符和最后一个字符通常是%。%表示任意多个字符,_表示任意字符返回字符串表达式2中字符串表达式1所指定模式第一次出现的起始位置。没有找到返回0。 difference(字符串表达式1,字符串表达式2) select difference('Green','Greene')返回4 返回一个0到4的整数值,指示两个字符表达式的之间的相似程度。 0表示几乎不同或完全不同, 4表示几乎相同或完全相同。 说明:注意相似并不代表相等 left(字符串表达式,整数表达式) select left('abcdefg',2)返回ab 说明:返回字符串中从左边开始指定个数的字符。

SQLSERVER操作命令

SQLSERVER数据库操作 ******操作前,请确定SQL的服务已经开启******** 一:登录进入sql数据库 1、开始---所有程序---Microsoft SQL Server 2005---SQL Server Management Studio Express 2、此时出现“连接到服务器”的对话框, “服务器名称”设置为SQL数据库所在机器的IP地址 “身份验证”设置为SQL Server身份验证或者Windows 身份验证 填写登录名和密码后,点击“连接”按钮,即可进入到SQL数据库操作界面。 二:新建数据库 登录进去后,右击“数据库”,选择—“新建数据库” 设置数据库名称,在下面的选项卡中还可以设置数据库的初始大小,自动增长,路径。 点击确定,一个数据库就建好了。 三:如何备份的数据库文件。 登录进入后,右击相应的需要备份数据库----选择“任务” 目标下的备份到,点击“添加”按钮可以设置备份数据库保存的路径。 四:如何还原备份的数据库文件。(以本地机器为例子) 1、设置服务器名称,点击右边的下拉框的三角,选择“浏览更多…”。 此时出现查找服务器对话框,选择“本地服务器”---点开“数据库引擎”前面 的三角---选中出现的服务器名称—确定。 (注:可以在“网络服务器”选项卡中设置网络服务器) 2、设置身份验证,选择为“windows身份验证” 3、点击连接按钮,进入数据库管理页面 4、右击“数据库”,选择“还原数据库”,出现还原数据库的对话框 还原的目标----目标数据库,这里设置数据库的名字 还原的源----选择“源设备”,在弹出的对话框中点击“添加”按钮,找到所备 份的数据库文件,确定。 5、此时,在还原数据库对话框中会出现所还原的数据库的信息。在前面选中所需还 原的数据库。确定。 6、为刚刚还原的数据库设置相应的用户。 a点开“安全性”---右击“登录名”---新建登录名 b 设置登录名(假如为admin),并设置为SQL Server身份验证,输入密码,去除 “强制实施密码策略”前的勾。 C 找到导入的数据库,右击此数据库----选择“属性”,在选择页中,点击“文件” 设置所有者,点击右边的按钮,选择“浏览”,找到相应的用户(如admin)。确 定。。 7、此时重新以admin的身份进入,就可操作相应的数据库。

整理的SQL常用函数

create table test (id int, value varchar(10)) insertinto test values('1','aa') insertinto test values('1','bb') insertinto test values('2','aaa') insertinto test values('2','bbb') insertinto test values('2','ccc') insertinto test values('3','aa') insertinto test values('4','bb') select*from test select id, [values] =stuff((select','+ [values] from test t where id = test.id forxmlpath('')), 1 , 1 ,'') from test groupby id stuff(param1,startIndex,length, param2) 说明:将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。*/

COUNT()函数用于返回一个列内所有非空值的个数,这是一个整型值。 由于COUNT(*)函数会忽略NULL值,所以这个查询的结果是2。 三、SUM()函数 SUM()函数是最常用的聚合函数之一,它的功能很容易理解:和AVG()函数一样,它用于数值数据类型,返回一个列范围内所有非空值的总和。 四、CAST()函数 CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。 以下例子用于将文本字符串'123'转换为整型: SELECT CAST('123' AS int) 返回值是整型值123。 如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢? SELECT CAST('123.4' AS int) CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。由于123.4不能用int数据类型来表示,所以对这个函数调用将产生一个错误。 Server: Msg 245, Level 16, State 1, Line 1 Syntax error converting the varchar value '123.4' to a column of data type int. 在将varchar值'123.4' 转换成数据类型int时失败。 要返回一个合法的数值,就必须使用能处理这个值的数据类型。对于这个例子,存在多个可用的数据类型。如果通过CAST()函数将这个值转换为decimal类型,需要首先定义decimal 值的精度与小数位数。在本例中,精度与小数位数分别为9与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小的小数是0.01。 SELECT CAST('123.4' AS decimal(9,2)) decimal数据类型在结果网格中将显示有效小数位:123.40 精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server 将截断数字的小数部分,而不会产生错误。 SELECT CAST('123.4' AS decimal) 结果是一个整数值:123 五、CONVERT()函数 对于简单类型转换,CONVERT()函数和CAST()函数的功能相同,只是语法不同。 CAST()函数一般更容易使用,其功能也更简单。 CONVERT()函数的优点是可以格式化日期和数值,它需要两个参数:第1个是目标数据类型,第2个是源数据。 CONVERT()函数还具有一些改进的功能,它可以返回经过格式化的字符串值,且可以把日期值格式化成很多形式。有28种预定义的符合各种国际和特殊要求的日期与时间输出格式。 六、STR()函数 这是一个将数字转换为字符串的快捷函数。这个函数有3个参数:数值、总长度和小数位数。如果数字的整数位数和小数位数(要加上小数点占用的一个字符)的总和小于总长度,对结果中左边的字符将用空格填充。在下面第1个例子中,包括小数点在内一共是5个字符。结果

sqlserver日期时间函数

sql server日期时间函数 Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数。 select datediff(day,'2004-09-01','2004-09-18') --返回:17 4. datepart 返回代表指定日期的指定日期部分的整数。 SELECT DATEPART(month, '2004-10-15') --返回 10 5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, '2004-10-15') --返回:星期五 6. day(), month(),year() --可以与datepart对照一下 select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114) select datename(dw,'2004-10-15') select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15') 函数参数/功能 GetDate( ) 返回系统目前的日期与时间 DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1 DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期 DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值

SQL Server系统函数大全

sql server 系统函数大全 一、字符转换函数 1、ASCII() 返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。 2、CHAR() 将ASCII 码转换为字符。如果没有输入0 ~ 255之间的ASCII 码值,CHAR()返回NULL 。 3、LOWER()和UPPER() LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。 4、STR() 把数值型数据转换为字符型数据。 STR ([,length[,]]) length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10,decimal 缺省值为0。 当length 或者decimal 为负值时,返回NULL; 当length 小于小数点左边(包括符号位)的位数时,返回length 个*; 先服从length ,再取decimal ; 当返回的字符串位数小于length ,左边补足空格。 二、去空格函数 1、LTRIM() 把字符串头部的空格去掉。 2、RTRIM() 把字符串尾部的空格去掉。 三、取子串函数 1、left() LEFT () 返回character_expression 左起integer_expression 个字符。 2、RIGHT()

RIGHT () 返回character_expression 右起integer_expression 个字符。 3、SUBSTRING() SUBSTRING (,length) 返回从字符串左边第starting_ position 个字符起length个字符的部分。 四、字符串比较函数 1、CHARINDEX() 返回字符串中某个指定的子串出现的开始位置。 CHARINDEX (<’substring_expression’>,) 其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。 此函数不能用于TEXT 和IMAGE 数据类型。 2、PATINDEX() 返回字符串中某个指定的子串出现的开始位置。 PATINDEX (<’%substring_expression%’>,)其中子串表达式前后必须有百分号“%”否则返回值为0。 与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、VARCHAR 和TEXT 数据类型。 五、字符串操作函数 1、QUOTENAME() 返回被特定字符括起来的字符串。 QUOTENAME (<’character_expression’>[,quote_ character]) 其中 quote_ character 标明括字符串所用的字符,缺省值为“[]”。 2、REPLICATE() 返回一个重复character_expression 指定次数的字符串。 REPLICATE (character_expression integer_expression) 如果 integer_expression 值为负值,则返回NULL 。

sqlserver常用函数

Sql Server 常用函数 1,统计函数avg, count, max, min, sum 2, 3,多数聚会不统计值为null的行。可以与distinct一起使用去掉重复的行。可以与group by 来分组4, 5, 2,数学函数 6, 7, SQRT 8, ceiling(n) 返回大于或者等于n的最小整数 9, floor(n), 返回小于或者是等于n的最大整数 10,round(m,n), 四舍五入,n是保留小数的位数 11,abs(n) 12,sign(n), 当n>0, 返回1,n=0,返回0,n<0, 返回-1 13,PI(), 3.1415.... 14,rand(),rand(n), 返回0-1之间的一个随机数 15,3,字符串函数 16, 17,ascii(), 将字符转换为ASCII码, ASCII('abc') = 97 18,char(), ASCII 码转换为字符 19,low(),upper() 20,str(a,b,c)转换数字为字符串。a,是要转换的字符串。b是转换以后的长度,c是小数位数。 str(123.456,8,2) = 123.46 21,ltrim(), rtrim() 去空格 22,left(n), right(n), substring(str, start,length) 截取字符串 23,charindex(子串,母串),查找是否包含。返回第一次出现的位置,没有返回0 24,patindex('%pattern%', expression) 功能同上,可是使用通配符 25,replicate('char', rep_time), 重复字符串 26,reverse(char),颠倒字符串 27,replace(str, strold, strnew) 替换字符串 28,space(n), 产生n个空行 29,stuff(), SELECT STUFF('abcdef', 2, 3, 'ijklmn') ='aijklmnef', 2是开始位置,3是要从原来串中删除的字符长度,ijlmn是要插入的字符串。 30,3,类型转换函数: 31, 32,cast, cast( expression as data_type), Example: 33,SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles WHERE CAST(ytd_sales AS char(20)) LIKE '3%' 34,convert(data_type, expression) 35,4,日期函数 36, 37,day(), month(), year() 38,dateadd(datepart, number, date), datapart指定对那一部分加,number知道加多少,date指定在谁的基础上加。datepart的取值包括,

SQL日期函数大全

通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。 在使用本文中的例子之前,你必须注意以下的问题。大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定。第一天(DATEFIRST)设定决定了你的系统使用哪一天作为一周的第一天。所有以下的例子都是以星期天作为一周的第一天来建立,也就是第一天设置为7。假如你的第一天设置不一样,你可能需要调整这些例子,使它和不同的第一天设置相符合。你可以通过@@DATEFIRST函数来检查第一天设置。 为了理解这些例子,我们先复习一下DATEDIFF和DATEADD函数。DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。要了解更多的DATEDIFF和DATEADD函数以及时间间隔可以阅读微软联机帮助。 使用DATEDIFF和DATEADD函数来计算日期,和本来从当前日期转换到你需要的日期的考虑方法有点不同。你必须从时间间隔这个方面来考虑。比如,从当前日期到你要得到的日期之间有多少时间间隔,或者,从今天到某一天(比如1900-1-1)之间有多少时间间隔,等等。理解怎样着眼于时间间隔有助于你轻松的理解我的不同的日期计算例子。 一个月的第一天 第一个例子,我将告诉你如何从当前日期去这个月的最后一天。请注意:这个例子以及这篇文章中的其他例子都将只使用DATEDIFF和DATEADD函数来计算我们想要的日期。每一个例子都将通过计算但前的时间间隔,然后进行加减来得到想要计算的日期。 这是计算一个月第一天的SQL 脚本: SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 我们把这个语句分开来看看它是如何工作的。最核心的函数是getdate(),大部分人都知道这个是返回当前的日期和时间的函数。下一个执行的函数DATEDIFF(mm,0,getdate())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数。记住:时期和时间变量和毫秒一样是从“1900-01-01 00:00:00.000”开始计算的。这就是为什么你可以在DATEDIFF函数中指定第一个时间表达式为“0”。下一个函数是DATEADD,增加当前日期到“1900-01-01”的月数。通过增加预定义的日期“1900-01-01”和当前日期的月数,我们可以获得这个月的第一天。另外,计算出来的日期的时间部分将会是“00:00:00.000”。 这个计算的技巧是先计算当前日期到“1900-01-01”的时间间隔数,然后把它加到“1900-01-01”上来获得特殊的日期,这个技巧可以用来计算很多不同的日期。下一个例子也是用这个技巧从当前日期来产生不同的日期。 本周的星期一 这里我是用周(wk)的时间间隔来计算哪一天是本周的星期一。 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

SQLSERVER函数大全

SQL SERVER函数大全 SQL SERVER命令大全 SQLServer和Oracle的常用函数对比 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual 5.四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346 6.e为底的幂 S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7.取e为底的对数 S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数 S:select log10(10) value 1 O:select log(10,10) value from dual; 1 9.取平方 S:select SQUARE(4) value 16 O:select power(4,2) value from dual 16

Sql server 函数大全

Sql 2008 函数大全 SQL2008 表达式:就是常量、变量、列或函数等与运算符的任意组合。 1、字符串函数 函数名称参数示例说明 ascii(字符串表达式) select ascii('abc') 返回 97 返回字符串中最左侧的字符的ASCII 码。 char(整数表达式) select char(100) 返回 d 把ASCII 码转换为字符。 介于0 与 255 之间的整数。如果该整数表达式不在此范围内,将返回NULL 值。charindex(字符串表达式 1, 字符串表达式2[,整数表达式]) select charindex('ab','BCabTabD') 返回 3 select charindex('ab','BCabTabD', 4) 返回 6 在字符串2 中查找字符串 1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串 1 与字符串 2 中有一个就是null 则返回 null。 可以指定在字符串2 中查找的起始位置。 difference(字符串表达式 1,字符串表达式 2) select difference('Green','Greene') 返回 4 返回一个0 到 4 的整数值,指示两个字符表达式的之间的相似程度。 0 表示几乎不同或完全不同, 4 表示几乎相同或完全相同。 注意相似并不代表相等 left(字符串表达式,整数表达式) select left('abcdefg',2) 返回 ab 返回字符串中从左边开始指定个数的字符。 //貌似下标从1开始? right(字符串表达式,整数表达式) select right('abcdefg',2) 返回 fg 返回字符串中从右边开始指定个数的字符。 len(字符串表达式) select len('abcdefg')返回 7 select len('abcdefg') 返回 7 返回指定字符串表达式的字符数,其中不包含尾随空格。 Oracle与mysql 里面就是 select length(‘aaa’); lower(字符串表达式) select lower('ABCDEF')返回 abcdef 返回大写字符数据转换为小写的字符表达式。 upper(字符串表达式) select upper('abcdef')返回 ABCDEF 返回小写字符数据转换为大写的字符表达式。

sqlserver函数大全

在SQL Server在线图书或者在线帮助系统中,函数的可选参数用方括号表示。在下列的CONVERT()函数例子中,数据类型的length和style参数是可选的: CONVERT (data-type [(length)], expression[,style]) 可将它简化为如下形式,因为现在不讨论如何使用数据类型: CONVERT(date_type, expression[,style]) 根据上面的定义,CONVERT()函数可接受2个或3个参数。因此,下列两个例子都是正确的: SELECT CONVERT(Varchar(20),GETDATE()) SELECT CONVERT(Varchar(20),GETDATE(), 101) 这个函数的第一个参数是数据类型Varchar(20),第2个参数是另一个函数GETDATE()。GETDATE()函数用datetime数据类型将返回当前的系统日期和时间。第2条语句中的第3个参数决定了日期的样式。这个例子中的101指以mm/dd/yyyy格式返回日期。本章后面将详细介绍GETDATE()函数。即使函数不带参数或者不需要参数,调用这个函数时也需要写上一对括号,例如GETDATE()函数。注意在书中使用函数名引用函数时,一定要包含括号,因为这是一种标准形式。 确定性函数 由于数据库引擎的内部工作机制,SQL Server必须根据所谓的确定性,将函数分成两个不同的组。这不是一种新时代的信仰,只和能否根据其输入参数或执行对函数输出结果进行预测有关。如果函数的输出只与输入参数的值相关,而与其他外部因素无关,这个函数就是确定性函数。如果函数的输出基于环境条件,或者产生随机或者依赖结果的算法,这个函数就是非确定性的。例如,GETDATE()函数是非确定性函数,因为它不会两次返回相同的值。为什么要把看起来简单的事弄得如此复杂呢?主要原因是非确定性函数与全局变量不能在一些数据库编程对象中使用(如用户自定义函数)。部分原因是SQL Server缓存与预编译可执行对象的方式。例如,即席查询可以使用任何函数,不过如果打算构建先进的、可重用的编程对象,理解这种区别很重要。 以下这些函数是确定性的: ●?AVG()(所有的聚合函数都是确定性的) ●?CAST() ●?CONVERT() ●?DATEADD() ●?DATEDIFF() ●?ASCII() ●?CHAR() ●?SUBSTRING() 以下这些函数与变量是非确定性的: ●?GETDATE()

SQLServer用户自定义函数详细介绍

SQL Server用户自定义函数 用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE 命令来执行。在 SQL Server 中根据函数返回值形式的不同将用户自定义函数分为三种类型: (1) 标量函数 标量函数返回一个确定类型的标量值,其返回值类型为除 TEXT 、 NTEXT 、IMAGE 、 CURSOR 、 TIMESTAMP 和 TABLE 类型外的其它数据类型。函数体语句定义 在 BEGIN-END 语句内。在 RETURNS 子句中定义返回值的数据类型,并且函数的最后一条语句必须为 Return 语句。创建标量函数的格式: Create Function 函数名(参数) Returns 返回值数据类型 [With {Encryption|Schemabinding}] [AS] BEGIN SQL 语句 ( 必须有 Return 子句 ) END 举例: ******************************************************************* CREATE FUNCTION dbo.Max ( @a int, @b int ) RETURNS int AS BEGIN DECLARE @max int IF @a>@b SET @max=@a ELSE SET @max=@b Return @max END *******************************************************************调用标量函数可以在 T-SQL 语句中允许使用标量表达式的任何位置调用返 回标量值(与标量表达式的数据类型相同)的任何函数。必须使用至少由两部分组成名称的函数来调用标量值函数,即架构名 . 对象名,如 dbo.Max(12,34) 。 (2) 内联表值函数 内联表值型函数以表的形式返回一个返回值,即它返回的是一个表。内联表 值型函数没有由 BEGIN-END 语句括起来的函数体。其返回的表是由一个位于RETURN 子句中的 SELECT 命令从数据库中筛选出来。内联表值型函数功能相当 于一个参数化的视图。

SQLServer常用关键字数据类型和常用语法

SQL Server 2008 常用关键字、数据类型和常用语法 常用关键字: SQL server 2008一共大约有180多个关键字。简要分为主要关键字、辅助关键字和函数类关键字。本文就常用的这三类关键字进行语法说明和用例。 说明:1、比较好的习惯是,数据库名以D_开头,表名用T_开头,字段名以F_开头,这样可以防止和关键字重名。 2、如果确实用到了系统关键字,就要在关键上加[]方括号,以与关键字进行区别。例如有一个用户表被命名为USER,则查询该表内容的时候:SELECT * FROM USER语句是错误的,应该是SELECT * FROM [USER]。因为USER是关键字。

数据类型: SQL Server 2008一共有36种数据类型。具体如下:

常用语法: 一、数据库 【创建数据库】 CREATE DATABASE 【修改数据库】 ALTER DATABASE 【删除数据库】 DROP DATABASE 二、表结构 【创建数据表】 1、设定字段是允许空,非空、标识列,自增和主键约束。 CREATE TABLE T_CUSTOMER--表名 (CUSTOMERID INT IDENTITY(1,1),--客户ID,标识列,从开始,每次自增 COMPANYNAME NVARCHAR(50)NOT NULL,--,如果不显示指明NOT NULL,系统默认是允许空的USERNAME NVARCHAR(10)NOT NULL,--联系人姓名,非空 PHONENUMBER CHAR(11)NULL,--联系电话,允许为空 CONSTRAINT T_CUSTOMER_PrimaryKey PRIMARY KEY (CUSTOMERID))--设定USERID为主键,用括号括起来 /*每个单词之间是空格隔开,每个字段之间用单引号隔开,整个字段定义部分用括号括起来*/ /*T_RegUser_PrimaryKey是约束名*/ 2、设定字段是UNIQUEIDENTIFIER数据类型,唯一性约束,CHECK约束和默认值约束。

sqlserver日期函数

sqlserver日期函数 SQLServer时间日期函数详解,SQLServer,时间日期, 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:0 0.000 3. datediff 返回跨两个指定日期的日期和时间边界数。 select datediff(day,'2004-09-01','2004-09-18') --返回:17 select datediff(day,'2004-09-18','2004-09-01') --返回:-17 4. datepart 返回代表指定日期的指定日期部分的整数。 SELECT DATEPART(month, '2004-10-15') --返回10 5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, '2004-10-15') --返回:星期五 6. day(), month(),year() --可以与datepart对照一下 select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114) select datename(dw,'2004-10-15') select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15') 函数参数/功能 GetDate( ) 返回系统目前的日期与时间 DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1 DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期 DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称 参数interval的设定值如下: 值缩写(Sql Server)(Access 和ASP) 说明 Year Yy yyyy 年1753 ~ 9999 Quarter Qq q 季1 ~ 4 Month Mm m 月1 ~ 12

SQL函数用法大全

SQL 是用于访问和处理数据库的标准的计算机语言。 什么是SQL? ?SQL 指结构化查询语言 ?SQL 使我们有能力访问数据库 ?SQL 是一种ANSI 的标准计算机语言 编者注:ANSI,美国国家标准化组织 SQL 能做什么? ?SQL 面向数据库执行查询 ?SQL 可从数据库取回数据 ?SQL 可在数据库中插入新的纪录 ?SQL 可更新数据库中的数据 ?SQL 可从数据库删除记录 ?SQL 可创建新数据库 ?SQL 可在数据库中创建新表 ?SQL 可在数据库中创建存储过程 ?SQL 可在数据库中创建视图 ?SQL 可以设置表、存储过程和视图的权限 SQL 是一种标准- 但是... SQL 是一门ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。 不幸地是,存在着很多不同版本的SQL 语言,但是为了与ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。 注释:除了SQL 标准之外,大部分SQL 数据库程序都拥有它们自己的私有扩展! 在您的网站中使用SQL 要创建发布数据库中数据的网站,您需要以下要素: ?RDBMS 数据库程序(比如MS Access, SQL Server, MySQL) ?服务器端脚本语言(比如PHP 或ASP) ?SQL ?HTML / CSS RDBMS

相关文档
最新文档