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
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() --世界标准时间
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) --返回从 0 到 1 之间的随机 float 值。 --返回一个数值,舍入到指定的长度。注意返回的数值和原数值的总位数没有变化。 select round(1234.56789,2) --输出 1234.57000 select round(1234.56789,0) --输出 1235.00000
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 '类型')
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('字段') --返回组中所有值的和。空值将被忽略。表达式为数值表达式
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
7.集合
--Union(并集=集合+集合) select '1' as 姓名 --列名由第一集合决定 Union --自动去掉重复值 select '2' as 编号 --如果此处为'1' 则输出姓名列的值1 --输出姓名列的值1、2 --intersect(交集) select '1' as 姓名 intersect select '1' as 编号 --输出姓名列的值1