SQL Server 2000 或 2005 关键字及函数手册

SQL Server 2000 或 2005 关键字及函数手册

Code
----统计函数---- 
AVG --求平均值 
COUNT --统计数目 
MAX --求最大值 
MIN --求最小值 
SUM --求和 

--AVG 
use pangu 
select avg(e_wage) as dept_avgWage 
from employee 
group by dept_id 

--MAX 
--
求工资最高的员工姓名 
use pangu 
select e_name 
from employee 
where e_wage = 
(
select max(e_wage) 
from employee) 

--STDEV() 
--
STDEV()函数返回表达式中所有数据的标准差 

--STDEVP() 
--
STDEVP()函数返回总体标准差 

--VAR() 
--
VAR()函数返回表达式中所有值的统计变异数 

--VARP() 
--
VARP()函数返回总体变异数 

----算术函数---- 

/***三角函数***/ 
SIN(float_expression) --返回以弧度表示的角的正弦 
COS(float_expression) --返回以弧度表示的角的余弦 
TAN(float_expression) --返回以弧度表示的角的正切 
COT(float_expression) --返回以弧度表示的角的余切 
/*
**反三角函数***/ 
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角 
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角 
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角 
ATAN2(float_expression1,float_expression2) 
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角 
DEGREES(numeric_expression) 
--把弧度转换为角度返回与表达式相同的数据类型可为 
--
INTEGER/MONEY/REAL/FLOAT 类型 
RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为 
--
INTEGER/MONEY/REAL/FLOAT 类型 
EXP(float_expression) --返回表达式的指数值 
LOG(float_expression) --返回表达式的自然对数值 
LOG10(float_expression)--返回表达式的以10 为底的对数值 
SQRT(float_expression) --返回表达式的平方根 
/*
**取近似值函数***/ 
CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为 
--
INTEGER/MONEY/REAL/FLOAT 类型 
FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为 
--
INTEGER/MONEY/REAL/FLOAT 类型 
ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据 
--
类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 
ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为 
--
INTEGER/MONEY/REAL/FLOAT 类型 
SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型 
--
与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 
PI() --返回值为π 即3.1415926535897936 
RAND([integer_expression]--用任选的[integer_expression]做种子值得出0-1 间的随机浮点数 


18、字符串函数 
ASCII() --函数返回字符表达式最左端字符的ASCII 码值 
CHAR() --函数用于将ASCII 码转换为字符 
--
如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值 
LOWER() --函数把字符串全部转换为小写 
UPPER() --函数把字符串全部转换为大写 
STR() --函数把数值型数据转换为字符型数据 
LTRIM() --函数把字符串头部的空格去掉 
RTRIM() --函数把字符串尾部的空格去掉 
LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串 
CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置 
SOUNDEX() --函数返回一个四位字符码 
--
SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 
DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异 
--
0 两个SOUNDEX 函数返回值的第一个字符不同 
--
1 两个SOUNDEX 函数返回值的第一个字符相同 
--
2 两个SOUNDEX 函数返回值的第一二个字符相同 
--
3 两个SOUNDEX 函数返回值的第一二三个字符相同 
--
4 两个SOUNDEX 函数返回值完全相同 


QUOTENAME() --函数返回被特定字符括起来的字符串 
/*
select quotename('abc', '{') quotename('abc') 
运行结果如下 
----------------------------------{ 
{abc} [abc]
*/ 

REPLICATE() --函数返回一个重复character_expression 指定次数的字符串 
/*
select replicate('abc', 3) replicate( 'abc', -2) 
运行结果如下 
----------- ----------- 
abcabcabc NULL
*/ 

REVERSE() --函数将指定的字符串的字符排列顺序颠倒 
REPLACE() --函数返回被替换了指定子串的字符串 
/*
select replace('abc123g', '123', 'def') 
运行结果如下 
----------- ----------- 
abcdefg
*/ 

SPACE() --函数返回一个有指定长度的空白字符串 
STUFF() --函数用另一子串替换字符串指定位置长度的子串 


19、数据类型转换函数---- 
CAST() 函数语法如下 
CAST() (<expression> AS <data_ type>[ length ]
CONVERT() 函数语法如下 
CONVERT() (<data_ type>[ length ]<expression> [, style]

select cast(100+99 as charconvert(varchar(12), getdate()) 
运行结果如下 
------------------------------ ------------ 
199 Jan 15 2000 

20、日期函数---- 
DAY() --函数返回date_expression 中的日期值 
MONTH() --函数返回date_expression 中的月份值 
YEAR() --函数返回date_expression 中的年份值 
DATEADD(<datepart> ,<number> ,<date>
--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期 
DATEDIFF(<datepart> ,<number> ,<date>
--函数返回两个指定日期在datepart 方面的不同之处 
DATENAME(<datepart> , <date>--函数以字符串的形式返回日期的指定部分 
DATEPART(<datepart> , <date>--函数以整数值的形式返回日期的指定部分 
GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间 

21、系统函数---- 
APP_NAME() --函数返回当前执行的应用程序的名称 
COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值 
COL_LENGTH(<'table_name'><'column_name'>--函数返回表中指定字段的长度值 
COL_NAME(<table_id><column_id>--函数返回表中指定字段的名称即列名 
DATALENGTH() --函数返回数据表达式的数据的实际长度 
DB_ID(['database_name']--函数返回数据库的编号 
DB_NAME(database_id) --函数返回数据库的名称 
HOST_ID() --函数返回服务器端计算机的名称 
HOST_NAME() --函数返回服务器端计算机的名称 
IDENTITY(<data_type>[, seed increment][AS column_name]
--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中 
/*
select identity(int, 1, 1) as column_name 
into newtable 
from oldtable
*/ 
ISDATE() --函数判断所给定的表达式是否为合理日期 
ISNULL(<check_expression><replacement_value>--函数将表达式中的NULL 值用指定值替换 
ISNUMERIC() --函数判断所给定的表达式是否为合理的数值 
NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值 
NULLIF(<expression1><expression2>
--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值 

 


22、数学函数 

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 

10.取平方根 
S:
select SQRT(4) value 2 
O:
select SQRT(4) value from dual 2 

11.求任意数为底的幂 
S:
select power(3,4) value 81 
O:
select power(3,4) value from dual 81 

12.取随机数 
S:
select rand() value 
O:
select sys.dbms_random.value(0,1) value from dual; 

13.取符号 
S:
select sign(-8) value -1 
O:
select sign(-8) value from dual -1 
----------数学函数 

14.圆周率 
S:
SELECT PI() value 3.1415926535897931 
O:不知道 

15.sin,cos,tan 参数都以弧度为单位 
例如:
select sin(PI()/2) value 得到1(SQLServer) 

16.Asin,Acos,Atan,Atan2 返回弧度 

17.弧度角度互换(SQLServer,Oracle不知道) 
DEGREES:弧度-〉角度 
RADIANS:角度-〉弧度 

---------数值间比较 

18. 求集合最大值 
S:
select max(value) value from 
(
select 1 value 
union 
select -2 value 
union 
select 4 value 
union 
select 3 value)a 

O:
select greatest(1,-2,4,3) value from dual 

19. 求集合最小值 
S:
select min(value) value from 
(
select 1 value 
union 
select -2 value 
union 
select 4 value 
union 
select 3 value)a 

O:
select least(1,-2,4,3) value from dual 

20.如何处理null值(F2中的null以10代替) 
S:
select F1,IsNull(F2,10) value from Tbl 
O:
select F1,nvl(F2,10) value from Tbl 

--------数值间比较 

21.求字符序号 
S:
select ascii('a') value 
O:
select ascii('a') value from dual 

22.从序号求字符 
S:
select char(97) value 
O:
select chr(97) value from dual 

23.连接 
S:
select '11'+'22'+'33' value 
O:
select CONCAT('11','22')||33 value from dual 

23.子串位置 --返回3 
S:select CHARINDEX('s','sdsq',2) value 
O:
select INSTR('sdsq','s',2) value from dual 

23.模糊子串的位置 --返回2,参数去掉中间%则返回7 
S:select patindex('%d%q%','sdsfasdqe') value 
Oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR
> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6 

24.求子串 
S:
select substring('abcd',2,2) value 
O:
select substr('abcd',2,2) value from dual 

25.子串代替 返回aijklmnef 
S:
SELECT STUFF('abcdef'23'ijklmn') value 
O:
SELECT Replace('abcdef''bcd''ijklmn') value from dual 

26.子串全部替换 
S:没发现 
O:
select Translate('fasdbfasegas','fa','' ) value from dual 

27.长度 
S:
len,datalength 
O:length 

28.大小写转换 lower,upper 

29.单词首字母大写 
S:没发现 
O:
select INITCAP('abcd dsaf df') value from dual 

30.左补空格(LPAD的第一个参数为空格则同space函数) 
S:
select space(10)+'abcd' value 
O:
select LPAD('abcd',14) value from dual 

31.右补空格(RPAD的第一个参数为空格则同space函数) 
S:
select 'abcd'+space(10) value 
O:
select RPAD('abcd',14) value from dual 

32.删除空格 
S:
ltrim,rtrim 
O:
ltrim,rtrim,trim 

33. 重复字符串 
S:
select REPLICATE('abcd',2) value 
O:没发现 

34.发音相似性比较(这两个单词返回值一样,发音相同) 
S:
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe'
O:
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe'from dual 
SQLServer中用SELECT 
DIFFERENCE('Smithers''Smythers') 比较soundex的差 
返回0
-4,4为同音,1最高 

23、日期函数 

35.系统时间 
S:
select getdate() value 
O:
select sysdate value from dual 

36.前后几日 
直接与整数相加减 

37.求日期 
S:
select convert(char(10),getdate(),20) value 
O:
select trunc(sysdate) value from dual 
select to_char(sysdate,'yyyy-mm-dd') value from dual 

38.求时间 
S:
select convert(char(8),getdate(),108) value 
O:
select to_char(sysdate,'hh24:mm:ss') value from dual 

39.取日期时间的其他部分 
SATEPART 和 
DATENAME 函数 (第一个参数决定) 
O:to_char函数 第二个参数决定 

参数
---------------------------------下表需要补充 
year yy, yyyy 
quarter qq, q (季度) 
month mm, m (m O无效) 
dayofyear dy, y (O表星期) 
day dd, d (d O无效) 
week wk, ww (wk O无效) 
weekday dw (O不清楚) 
Hour hh,hh12,hh24 (hh12,hh24 S无效) 
minute mi, n (n O无效) 
second ss, s (s O无效) 
millisecond ms (O无效) 
---------------------------------------------- 

40.当月最后一天 
S:不知道 
O:
select LAST_DAY(sysdate) value from dual 

41.本星期的某一天(比如星期日) 
S:不知道 
O:
SELECT Next_day(sysdate,7) vaule FROM DUAL; 

42.字符串转时间 
S:可以直接转或者select 
cast('2004-09-08'as datetime) value 
O:
SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL; 

43.求两日期某一部分的差(比如秒) 
S:
select datediff(ss,getdate(),getdate()+12.3) value 
O:直接用两个日期相减(比如d1
-d2=12.3) 
SELECT (d1-d2)*24*60*60 vaule FROM DUAL; 

44.根据差值求新的日期(比如分钟) 
S:
select dateadd(mi,8,getdate()) value 
O:
SELECT sysdate+8/60/24 vaule FROM DUAL; 

45.求不同时区时间 
S:不知道 
O:
SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL; 

-----时区参数,北京在东8区应该是Ydt------- 
AST ADT 大西洋标准时间 
BST BDT 白令海标准时间 
CST CDT 中部标准时间 
EST EDT 东部标准时间 
GMT 格林尼治标准时间 
HST HDT 阿拉斯加—夏威夷标准时间 
MST MDT 山区标准时间 
NST 纽芬兰标准时间 
PST PDT 太平洋标准时间 
YST YDT YUKON标准时间

posted @ 2008-12-18 10:30  KinM  阅读(989)  评论(0编辑  收藏  举报