SQL 函数 (代码)

-------------------------
-     时间日期函数      -
-------------------------

日期函数与数学运算函数:
--------------------------------------

1.YEAR、MONTH 和DAY函数:

提取日期值:
SELECT 编号,姓名,性别,生日,
YEAR(生日) AS '出生年份',
MONTH(生日) AS '出生月份',
DAY(生日) AS '出生日'
FROM fun
ORDER BY 编号
--------------------------------------
重新组合提取的日期值:
SELECT 编号,姓名,性别,生日,
CAST(YEAR(生日) AS CHAR(4))+'年'
+CAST(MONTH(生日)AS CHAR(2))+'月'
+CAST(DAY(生日)AS CHAR(2))+'日'
AS '出生年月日'
FROM fun
ORDER BY 编号
--------------------------------------
2.DATEADD 函数的应用:
将当前日期延迟若干天后的日期

SELECT 编号,姓名,性别,生日,
DATEADD(DAY,3,生日)AS '延迟三天为'
FROM fun
ORDER BY 编号
--------------------------------------
3.GETDATE 函数的应用:
获得当前系统时间

SELECT 编号,姓名,性别,生日,
GETDATE() AS '实际日期'
FROM fun
ORDER BY 编号
--------------------------------------
4.DATEDIFF 函数的应用:
获取两个时间的差值

SELECT 货物编号,货物名称,发货日期,收货日期
DATEDIFF (DAY, 发货日期,收货日期) AS '运输天数'
FROM 货物信息表
ORDER BY 编号
--------------------------------------
计算年龄:
SELECT 编号,姓名,性别,生日,
DATEDIFF(YEAR,生日,GETDATE()) AS '年龄'
FROM fun
ORDER BY 编号
--------------------------------------

-------------------------
-   CONVERT 转换时间    -
-------------------------

style 的不同取值对应的日期、时间格式:
---------------------------------------------------------------------------
Style(2位表示年份)| Style(4位表示年份) | 输入输出格式
---------------------------------------------------------------------------
0                        | 100                      | mon dd yyyy hh:miAM(或PM)
---------------------------------------------------------------------------
1                        | 101   美国             | mm/dd/yy
---------------------------------------------------------------------------
2                        | 102   ANSI            | yy-mm-dd             
---------------------------------------------------------------------------
3                        | 103   英法              | dd/mm/yy        
---------------------------------------------------------------------------
4                        | 104   德国              | dd.mm.yy
---------------------------------------------------------------------------
5                        | 105   意大利           | dd-mm-yy          
---------------------------------------------------------------------------
6                        | 106                       | dd mon yy
---------------------------------------------------------------------------
7                        | 107                       | mon dd,yy
---------------------------------------------------------------------------
8                        | 108                       | hh:mm:ss
---------------------------------------------------------------------------
9                        | 109                       | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
---------------------------------------------------------------------------
10                      | 110   美国              | mm-dd-yy
---------------------------------------------------------------------------
11                      | 111   日本              | yy/mm/dd
---------------------------------------------------------------------------
12                      | 112   ISO              | yymmdd
---------------------------------------------------------------------------
13                      | 113   欧洲默认值     | dd mon yyyy hh:mi:ss:mmm(24小时制)
---------------------------------------------------------------------------
14                      | 114                      | hh:mi:ss:mmm(24小时制)
---------------------------------------------------------------------------
20                      | 120   ODBC 规范    | yyyy-mm-dd hh:mi:ss(24小时制)
---------------------------------------------------------------------------
21                      | 121                      | yyyy-mm-dd hh:mi:ss:mmm(24小时制)
---------------------------------------------------------------------------
---------------------------------------------------------------------------

获取当前系统时间:
SELECT CONVERT(VARCHAR,GETDATE(),20)
AS 'time'
--------------------------------------
定义日期的显示格式(一):
SELECT 编号,姓名,性别,生日,
CONVERT(varchar,生日,111) AS '日期格式'
FROM fun
--------------------------------------
定义日期的显示格式(二):
SELECT 编号,姓名,性别,生日,
CONVERT(char,生日,4) AS '日期格式'
FROM fun
--------------------------------------
定义日期的显示格式(三):
SELECT 编号,姓名,性别,生日,
CONVERT(char,生日,12) AS '日期格式'
FROM fun
--------------------------------------

-------------------------
-      数据运算函数     -
-------------------------

常用的数据运算函数:
------------------------------------------------
函数表达式     |  函数返回值
------------------------------------------------
ABS()           |  表达式的绝对值
------------------------------------------------
CEILING()     |  大于等于表达式的最小值
------------------------------------------------
FLOOR()        |  小于等于表达式的最大值
------------------------------------------------
ROUND(,INT) |  以INT位精度的四舍五入的值
------------------------------------------------
SIN()             |  角的正弦值
------------------------------------------------
ASIN()           |  以弧度表示的正弦的角
------------------------------------------------
COS()            |  角的余弦值
------------------------------------------------
ACOS()          |  以弧度表示的余弦的脚
------------------------------------------------
TAN()            |  角的正切值
------------------------------------------------
ATAN()          |  以弧度表示的正切的角
------------------------------------------------
EXP()            |  表达式的值数值
------------------------------------------------
SQRT()          |  表达式的平方根
------------------------------------------------
SIGN()          |  参数的正负号,1(正);0,-1(负)
------------------------------------------------
PI()               |  π(3.1415926)
------------------------------------------------
RAND()          |  0--1之间的随机浮点数
------------------------------------------------

获得表达式的绝对值:
SELECT ABS(-55)
AS '绝对值'
--------------------------------------
使用ROUND 函数:
SELECT 货物编号,货物名称,数量,ROUND(单价,0) AS '货物单价',
数量*单价 AS 总价
FROM 货物信息表
ORDER BY 编号
--------------------------------------
使用CEILING函数和FLOOR函数:
SELECT 货物编号,货物名称,数量,单价,
CELING(单价) AS '价格浮动上限',
FLOOR(单价) AS '价格浮动下限'
FROM 货物信息表
ORDER BY 编号
--------------------------------------
使用正弦与余弦相关函数:
SELECT SIN(30) AS 'SIN(30)',
ASIN(0.5) AS 'ASIN(0.5)',
COS(60) AS 'COS(0.5)',
ACOS(0.45) AS 'ACOS(0.45)'
--------------------------------------
获得对数值:
SELECT LOG(9) AS 求对数值
--------------------------------------
SQRT函数与RAND函数的应用:
SELECT SQRT(9) AS ‘9的平方根’
RAND() AS '得到一个随机数'
--------------------------------------
PI 函数的使用:
SELECT PI() AS PI的值
--------------------------------------

*****************
*      字符串函数       *
*****************
-------------------------------------------------------------
常用的字符串处理函数及其功能:
-------------------------------------------------------------
函数表达式                 |     参数及功能
------------------------|------------------------------------
ASCII(char)              | 返回字符串表达式最左端字符的ASCII值
------------------------|------------------------------------
CHAR(int)                 | 将ASCII值转换为字符
------------------------|------------------------------------
LOWER(char)            | 将表达式中的字符串全部转换为小写
------------------------|------------------------------------
UPPER(char)             | 将表达式中的字符串全部转换为大写
------------------------|------------------------------------
LTRIM(char)             | 去掉字符串前端的空格
------------------------|------------------------------------
RTRIM(char)             | 去掉字符串末端的空格
------------------------|------------------------------------
LEN(char)                 | 取字符串的长度
------------------------|------------------------------------
LEFT(char,int)           | 截取部分字符串,截取的子串是从字符
                               | 串最左起,到int个字符的部分
------------------------|------------------------------------
RIGHT(char,int)        | 截取部分字符串,截取的子串是从字符
                               | 串第int个字符起,到最后一个字符
------------------------|------------------------------------
SUBSTRING(,start,length)| 返回部分字符串,返回的子串是从字符
                                      | 串左边第start个字符起,length个字符
------------------------|------------------------------------
CHARINDEX(substring,_)  | 返回字符串中某个指定的子串出现的开始
                                      | 位置。substring时所要查找的字符表达
                                      | 式,_ 可以是字符串或列名表达式
------------------------|------------------------------------
REPLICATE(char,int)  | 返回一个重复char指定次数的字符串
------------------------|------------------------------------
REVERSE(char)         | 颠倒指定字符串字符的排列顺序
------------------------|------------------------------------
REPLACE(char1,char2,    | 表示char3替换char1中的char2
        char3)                 |
-------------------------------------------------------------

UPPER 函数的使用:
SELECT TOP 10 供应商编号,UPPER(公司名称) AS 'CompanyName',
UPPER(商品名称) AS 'ContactName'
FROM 供应信息表
--------------------------------------
LOWER 函数的使用:
SELECT TOP 10 供应商编号,LOWER(公司名称) AS 'CompanyName',
LOWER(商品名称) AS 'ContactName'
FROM 供应信息表
--------------------------------------
使用RTRIM 函数去除字符串空格:
SELECT TOP 10 供应商编号,RTRIM(公司名称)+商品名称 AS
'CnmpanyNameAndContactName',
FROM 供应信息表
--------------------------------------
去掉字符串前端空格:
SELECT 编号,姓名,性别,电话,地址
FROM 学生信息表
ORDER BY 编号
--------------------------------------
取字符串长度的函数:
SELECT TOP 10 供应商编号,LEN(公司名称) AS '公司名称长度',
LEN(商品名称) AS '商品名称长度'
FROM 供应信息表
--------------------------------------
LEFT 函数使用:
SELECT 编号,姓名,性别,电话,地址
FROM 学生信息表
WHERE LEFT(地址,3)='吉林省'
--------------------------------------
SUBSTRING 函数的使用:
SELECT 编号,姓名,性别,电话,SUBSTRING(地址,4,2) AS '所在市'
FROM 学生信息表
--------------------------------------
使用REVERSE 函数颠倒字符串的排列顺序:
SELECT TOP 10 供应商编号,公司名称,商品名称,
REVERSE(公司名称) AS '颠倒后的公司名称'
FROM 供应信息表
--------------------------------------
使用REPLACE 函数替换字符串:(将大连换位长春)
SELECT 编号,姓名,性别,电话,地址,
REPLACE(地址,'大连','长春') AS '新地址'
FROM 学生信息表
ORDER BY 编号
--------------------------------------

*****************
*        聚合函数       *
*****************

---------------------------------------
常见的聚合函数:
---------------------------------------
聚合函数      |      结果
-------------|-------------------------
SUM()        |所有值的总和
-------------|-------------------------
MAX()        |所有值中的最大值
-------------|-------------------------
MIN()        |所有之中的最小值
-------------|-------------------------
AVG()        |所有值的平均值
-------------|-------------------------
GOUNT()    |行数
---------------------------------------

SUM 函数的应用:
SELECT SUM(单价) AS '单价总和'
FROM 货物信息表
--------------------------------------
使用SUM 函数求多列数据的总和:
SELECT SUM(数量) AS '数量总和',
SUM(单价) AS '单价总和',
SUM(数量*单价) AS '货物总价'
FROM 货物信息表
--------------------------------------
MAX 函数的应用:
SELECTMAX(数量) AS '货物数量的最大值',
MAX(单价) AS '单价的最大值'
FROM 货物信息表
--------------------------------------
MAX 函数用于时间类的数据:
SELECT MAX(生日) AS '出生日期'
FROM 学生信息表
--------------------------------------
MAX 函数用于字符类型的数据:
SELECT MAX(姓名) AS '学生名称'
FROM 学生信息表
--------------------------------------
MIN 函数的应用:
SELECT MIN(数量) AS '数量的最小值',
MIN(单价) AS '单价的最小值'
FROM 货物信息表
--------------------------------------
MIN 函数用于事件类型的数据:
SELECT MIN(生日) AS '出生日期'
FROM 学生信息表
--------------------------------------
MIN 函数用于字符类型的数据:
SELECT MIN(姓名) AS '学生姓名'
FROM 学生信息表
--------------------------------------
AVG 函数的应用:
SELECT AVG(数量) AS '货物数量的平均值'
FROM 货物信息表
--------------------------------------
获得满足一定条件数据的平均值:
SELECT AVG(DATEDIFF(YEAR,生日,GETDATE())) AS '平均年龄'
FROM 学生信息表
WHERE 姓名 LIKE '刘%'
--------------------------------------
COUNT 函数的应用:
SELECT COUNT(*) AS '记录总数'
FROM 学生信息表
--------------------------------------
获取多列中所有记录的行数:
SELECT COUNT(姓名) AS '姓名列行数总数',
COUNT(电话) AS '电话列行数总数',
COUNT(地址) AS '地址列行数总数'
FROM 学生信息表
--------------------------------------
获得满足一定条件数据的记录总数:
SELECT COUNT(*) AS '记录总数'
FROM 学生信息表
WHERE 姓名 LIKE '刘%'
--------------------------------------
聚合函数的组合使用:
SELECT MAX(DATEDIFF(YEAR,生日,GETDATE())) AS '最大年龄',
MIN(DATEDIFF(YEAR,生日,GETDATE())) AS '最小年龄',
AVG(DATEDIFF(YEAR,生日,GETDATE())) AS '平均年龄',
COUNT(*) AS '记录总数'
FROM 学生信息表

posted @ 2011-08-11 11:55  rui_gao  阅读(280)  评论(0编辑  收藏  举报