1.表达式:是常量、变量、列或函数等与运算符的任意组合。以下参数中表达式类型是指表达式经运算后返回的值的类型

select ascii('abcd')  --返回左边第一个字符的AscII码  输出:97
select char(97) --把ASCII码转成字符  输出:a
select charIndex('12','211212') --返回字符串首次出现的位置,从1开始计数 输出:3
select charIndex('12','56565656') --不存在返回0。 输出:0
select charindex('12','211212',4) --从位置4开始查找,返回出现的位置 输出:5 
select difference('12','123') --返回0-4 表示相似度,相似不代表相等 输出:4
select left('asdfghjk',3) --返回前三个字符  输出:asd
select right('asdfghj',3) --返回后三个字符 输出:ghj
select len('as dfghjkl ') --返回字符个数,不包括尾空格 输出10
select lower('ASDFGHJKL') --转小写 输出:asdfghjkl
select upper('asdfghjkl') --转大写 输出:ASDFGHJKL
select Ltrim('    asdfg') --去掉前边空格 输出:asdfg
select Rtrim('asdfg    ') --去掉后边空格 输出:asdfg
select patindex('%as%','12as456as789') --前边字符通过后边字符匹配,返回第一个匹配结果 输出:3
select patindex('as%','12as456as789') --输出 0
select patindex('__as%','12as456as789') --输出:1
select patindex('___as%','12as456as789') --输出:0 _匹配一个,%匹配多个字符
select reverse('asdfgh') --字符串反转 输出hgfdsa
select 'a' + space(3) +'b' --输出a   b, a,b间加三个空格
select str(123.456) --输出       123,123前边7个空格
select str(123.456,7,1) --输出  123.5,前边两个空格
select str(123.456,5,3) --输出123.5
select str(123.456,2) --输出** 长度小于整数长度
select stuff('asdfghj',3,2,1234) --输出:as1234ghj 从位置3开始删除2个字符,用1234替换
select substring('asdfghjkl',2,2) --输出sd 从位置2开始的两个字符
select replace('asdfghjkl','df',1234) --输出:as1234ghjkl 用1234替换asdfghjkl中的df
select round(256.788,0) --四舍五入 输出257.000
select round(256.788,1) --四舍五入 输出256.800
select round(256.788,-1) --四舍五入 输出260.000
select ceiling(12.1) --向上取整 输出13
select floor(12.1) --向下取整 输出12
select isNull('字段',参数); --判断字段是否为null,如果是则用参数(类型与字段类型一致)替换null
View Code

2.日期和时间函数

 

select dateadd(year,1,'2000-01-01') --返回 2001-01-01 00:00:00.000
select dateadd(month,1,'2000-01-01') --返回 2000-02-01 00:00:00.000
select dateadd(day,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
select dateadd(dy,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
select dateadd(dw,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
select dateadd(dd,1,'2000-01-01') --返回 2000-01-02 00:00:00.000
select dateadd(mm,1,'2000-01-01') --返回 2000-02-01 00:00:00.000 加一月
select dateadd(qq,1,'2000-01-01') --返回 2000-04-01 00:00:00.000 加一个季度
select dateadd(hh,1,'2000-01-01') --返回 2000-01-01 01:00:00.000  小时
select dateadd(yy,1,'2000-01-01') --返回 2001-01-01 00:00:00.000 加一年

--返回两个指定日期的指定日期部分的差的整数值。
select datediff(yy,'2000-01-01','1990-12-30') --输出-10 输出时间差,后边减去前边的时间
select datediff(mm,'2000-01-01','1990-12-30') --输出-109 输出时间差
select datediff(dd,'2000-01-01','1990-12-30') --输出-3289 输出时间差

--返回表示指定日期的指定日期部分的字符串。
select datename(yy,'2000-01-01') --输出2000
select datename(mm,'2000-01-30') --输出01
select datename(dd,'2000-01-30') --输出30
select datename(dw,'2000-01-01') --输出 星期六 
select datename(wk,'2000-01-30') --输出 6 表示第六个星期
select datename(dy,'2000-03-30') --输出 90 表示第90天

--返回表示指定日期的指定日期部分的整数。 同上
select datepart(dw,'2000-01-01') --输出7 表示星期六

select getdate() --返回当前时间
select year('2000-01-30') --输出2000
select month('2000-01-30') --输出1
select day('2000-01-30') --输出30
select getutcdate() --世界标准时间
View Code

 3.数学函数

select abs(-15) --输出15 绝对值函数
select pi()  --输出3.14159265358979
select cos(pi()/3) --输出0.5
select sin(pi()/2) --输出1
select tan(pi()/4) --输出1
select cot(pi()/4) --输出1
select acos(0.5) --返回1.0471975511966
select asin(0.5)--返回 0.523598775598299
select atan(1) --返回0.785398163397448
select degrees(pi()/4) --输出45,返回以弧度指定的角的相应角度。
select radians(180.0) --输出3.1415926535897931  角度的弧度值 
select exp(4) --输出54.5981500331442 e的幂次e=2.718281...
select log(exp(1)) --输出1 以e为底的对数
select log10(100) --输出2 以10为底的对数
select ceiling(2.365) --输出3 返回大于或等于指定数值表达式的最小整数。
select floor(2.356) --输出2 返回小于或等于指定数值表达式的最大整数。
select power(2,3) --输出8 2的3次方
select sqrt(9) --输出3 开平方
select sign(9) --输出1 正数返回1,负数返回-1,0返回0
select rand(5) --返回从 01 之间的随机 float 值。
 --返回一个数值,舍入到指定的长度。注意返回的数值和原数值的总位数没有变化。
select round(1234.56789,2) --输出 1234.57000
select round(1234.56789,0) --输出 1235.00000
View Code

4.类型转换

select convert(varchar,23) --输出23
select N'年龄:' + convert(varchar,23) --输出年龄23,加N是为了使数据库识别 Unicode字符
select convert(varchar,getdate()) --输出10 7 2013 4:19PM
select convert(varchar,getdate(),120) --输出2013-10-07 16:20:28
select convert(varchar(10),getdate(),120) --输出2013-10-07

select cast(123 as varchar) --输出123
select cast('字段' as '类型')
View Code

5.系统函数和聚合函数

select newid() --返回一个GUID(全局唯一表示符)值
select isnumeric(123456) --判断表达式是否可以转换成数值,是返回1,否返回0
select isnull(null,N'没有值') --如果为空返回表达式的值 输出没有值
select isnull(N'有值',N'没有值') --输出:有值
select isdate('1988-10-07') --判断表达式是否可以转换成有效日期,是返回1,否返回0

select avg('字段') --返回组中各值的平均值。空值将被忽略。 表达式为数值表达式。
select count('字段') --返回组中的项数。COUNT(*) 返回组中的项数。包括 NULL 值和重复项
select max('字段') --返回组中的最大值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。
select min('字段') --返回组中的最小值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。
select sum('字段') --返回组中所有值的和。空值将被忽略。表达式为数值表达式
View Code

 6.数据库分支

--分支选择
--CASE搜索函数
SELECT 编号,
CASE  
WHEN 性别='' THEN '1'
WHEN 性别='' THEN '2'
ELSE 性别
END as sex
FROM CY_renyuan 
--简单CASE函数(只能判断是否相等,不能写条件)
SELECT 编号,
CASE  性别
WHEN '' THEN '1'
WHEN '' THEN '2'
ELSE 性别
END as sex
FROM CY_renyuan 
View Code

7.集合

--Union(并集=集合+集合)
select '1' as 姓名 --列名由第一集合决定
Union --自动去掉重复值
select '2' as 编号 --如果此处为'1' 则输出姓名列的值1
--输出姓名列的值1、2


--intersect(交集)
select '1' as 姓名
intersect
select '1' as 编号
--输出姓名列的值1
View Code

 

 

posted on 2013-10-07 16:34  zxd543  阅读(306)  评论(0编辑  收藏  举报