Sqlserver基础教程系列4-一些函数的用法

1)聚合函数:

聚合分析是指对数据表中的一列或多列所进行的统计分析

1、统计计数函数---COUNT( )调用方式可归结为三种:

COUNT(*)

    SELECT COUNT(*) AS 当前表的总行数

    FROM STUDENT5

COUNT(ALLCOLUMN)

    SELECT COUNT(S_AVGRADE) AS 参加考试的人数

    FROM STUDENT5

COUNT(DISTINCTCOLUMN)

    SELECT COUNT(DISTINCT S_DEPT) AS 不同系别的个数

     FROM STUDENT5

2、求和函数---SUM( )

SELECT SUM(S_AVGRADE) AS 所有平均成绩总和,SUM(DISTINCTS_AVGRADE) AS 非重复平均成绩的总和 FROM STUDENT5

说明:查询 sum(某一个字段) as 起个名字 哪个表

3、均值函数---AVG( )

SELECTAVG(S_AVGRADE) FROM STUDENT5 WHERE S_SEX =‘

SELECTAVG(DISTINCT S_AVGRADE) FROM STUDENT5

4、最大/最小函数---MAX()/MIN( )

函数MAX( )MIN( )分别用于求组中列COLUMN的最大值,最小值.

SELECT MAX(S_AVGRADE) AS 平均成绩的最大值,MIN(S_AVGRADE) AS 平均成绩的最小值

FROM STUDENT5

2)字符串函数:也可以结合到数据库表的查询中使用如下语句:

select LEFT(t_name,1) as 姓氏  from teacher 说明:就是查询教师表中某字段里面左侧最开始的一个字符。其它字符串函数用法类似

第二个示例:下面字符串练习的写法:

select charindex(‘be‘,‘aabecdefbeghi‘)  注意:字符串函数在练习的时候需要加上单引号

函数格式

功能描述

举例

ascii(character_expression)

返回字符串表达式中的第一个字符的ascii值(int型)

select ascii(‘bca’)返回98

char(integer_expression)

ascii值转换为相应的字符,并返回该字符

select char(65)返回‘a’,

char(97)返回‘a

charindex(expression1,

expression2[srart_location])

返回字符串中指定表达式的开始位置。如果指定srart_location,则表示从位置start_location  开始查找的字符串以返回其开始位置。如果没有匹配则返回0

charindex(‘be’,aabecdefbeghi)

返回3be在后面字符串中的第几个

charindex(‘be’,’aabecdefbeghi’,4)返回9

left(character_expression

,integer_expression)

返回字符串character_exre

ssion 中从做边开始的in

teger_expression个字符

left(‘abcdef,3)返回‘abc

len(string_expression)

right

返回指定字符串表达式的字符(而不是字节)个数

其中不包含尾随空格

len(‘a bcdefg’)返回8

lowercharacter-_  express

ion

将大写字符串数据转换为小写字符串数据后返回字符串表达式

lower(‘abcdefg’)返回‘abcdefg

ltrim(character_expression)

返回删除起始空格之后的字符串表达式

ltrim(  abcdef)返回‘abcdef

nchar(integer_expression)

根据unicode标准的定义,返回具有指定的证书代码的unicode

nchar197)返回’a’

patindex(‘%pattern%’,ex

pression)

返回指定表达式中某模式第一次出现的其实位置。如果在全部有效的文本和字符串数据类型中没有找大该模式,则返回零。可以使用通配符

patindex(%defg%,abcdefghidefg)返回4

quotename(‘character_str

ing’[,’quote_character’])

返回带有分隔符的unicode字符串

quotename(‘abcdef’,’’’’返回‘abcdef,)

quotename(‘abcdef’,’(’)返回‘(abcdef)’

replace(str_expression1,

str_exppression2,

str_expression3)

用第三个表达式str_expression3替换第一个字符串表达式str_expression1中出现的所有第二个指定字符串表达式str_expression2的匹配项,并返回替换后的字符串表达式

replace(‘abcdefghicde,’cd’,’china’)返回‘abchinaefghichinae

reversecharacter_expression

将字符串表达式中的字符首尾翻转,然后返回反转后的字符串

reverse(‘abcdefg’)返回‘gfedcba

richt(character_expression,

integer_expression)

返回字符串character_expression中从右边开始的inerger_expression  个字符

right(‘abcdef’,3)返回‘def

rtrim(character_expression)

返回删除尾随空格之后的字符串表达式

rtrim(“     bcdef   “)返回‘abcdef

space(integer_expression)

返回由integer_expression 个空格组成的字符

‘a’+space(4)+’b’返回‘a   b

str(float_expression[,length

[,]])

返回由数字数据转换来的字符串数据

str(123.4588,10,4)返回‘123.4588

stuffcharacter_expression,start,

length,character_expression

在字符串character_expression中从位置start开始删除start,length个字符,然后又从该位置插入字符串character_expression,最后返回处理后的字符串

stuff(‘abcdefgh,2,3,’xyz’)返回‘axyzefgh

substring(expression,start

,length)

返回给定字符expression中的一个子串,该子串是从位置start开始,长度为length的字符串

substring(“abcdef’,2,4)返回‘bcde

unicode(ncharacter_expres

sion,)

按照unicode标准的定义,返回输入表达式的第一个字符的整数值

unicodenakergatan24’

返回197

upper(character_expression)

返回小写字符串数据转换为大写的字符串表达式

upper(abcdefg)返回’abcefg

3)日期相关的函数

获取当前日期时间---GETDATE( )

SQL语句:

SELECT GETDATE( )AS 当前日期和时间

DATEADD() 函数

用法:DATEADD() 函数在日期中添加或减去指定的时间间隔。

DATEADD(datepart,number,date)

datepart 参数可以是下列的值:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

示例:

select DATEADD(DD,3,‘2015-2-5‘)

最后结果:

2015-02-08 00:00:00.000

DATEPART() 函数

用于提取一个日期/时间的单独部分,比如年、月、日、小时、分钟等等

示例:

select DATEPART(yyyy,‘2015-2-5‘)

第一个参数同上面表一样。

我们在看一个示例:

我们先学三个关键字:DECLARE SQlserver中表示定义一个变量,相当于说定义一个空盒子。以后我就可以往空盒子中装东西。SET:表示给变量赋上一值。类似于给盒子装上东西

最后一个关键词是PRINT 表示直接输出结果出来

案例:提取日期并输出日期  不要复制代码。自己动手写一下。

DECLARE @DTDATETIME;

DECLARE @YYNINT,@QQN INT,@MMN INT,@DYN INT,@DDN INT,@WKN INT,@DWN INT,@HHN INT,@MININT,@SSN INT,@MSN INT,@MCSN INT,@NAN INT;

SET @DT=GETDATE( );           --获取当前日期,时间

SET@YYN=DATEPART (YY, @DT);   --提取年份

SET@MMN=DATEPART (MM,@DT);  --提取月份

SET@DDN=DATEPART (DD,@DT);   --提取日

SET@QQN=DATEPART (QQ,@DT);   --提取季度

SET@DYN=DATEPART (DY,@DT);    --提取当日在本年度中的天数

SET@WKN=DATEPART (WK,@DT);    --提取周数

SET @DWN=DATEPART(DW,@DT);    --提取当前星期中的第几天

SET@HHN=DATEPART (HH,@DT);     --提取小时数

SET@MIN=DATEPART (MI,@DT);       --提取分数

SET@SSN=DATEPART (SS,@DT);        --提取秒数

SET@MSN=DATEPART (MS,@DT);      --提取毫秒数

SET@MCSN=DATEPART (MCS,@DT);   --提取微秒数

SET @NSN=DATEPART(NS,@DT);        --提取纳秒数

PRINT ‘年份:’+LTRIM(STR (@YYN));

PRINT ‘月份:’+LTRIM(STR (@MMN));

PRINT ‘:’+LTRIM(STR (@DDN));

PRINT ‘季度:’+LTRIM(STR (@QQN));

PRINT ‘当前日在年中的第几天:’+LTRIM(STR(@DYN) );

PRINT ‘当前周在年中的第几几周:’+LTRIM(STR(@WKN) );

PRINT ‘当前日在星期中的第几天:’+LTRIM(STR(@DWN) );

PRINT ‘小时数:’+LTRIM(STR(@HHN) );

PRINT ‘分数:’+LTRIM(STR (@MIN));

PRINT ‘秒数:’+LTRIM(STR (@SSN));

PRINT ‘毫秒数:’+LTRIM(STR(@MSN) );

PRINT ‘微秒数:’+LTRIM(STR(@MCSN) );

PRINT ‘纳秒数:’+LTRIM(STR(@NSN) );


本文出自 “读书屋” 博客,请务必保留此出处http://jiefei.blog.51cto.com/6994042/1611915

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。