SQL SERVER 查询语句

来源:互联网 发布:时时彩开奖采集器源码 编辑:程序博客网 时间:2024/05/29 08:19
公式表表达式 
 
  公式表表达式可以解决 子查询被重复查询调用,不但效率低,而且可读性低,不利于理解的问题。
  我们可以将公式表表达式(CET)视为临时结果集,在select、insert、update、delete或是create view语句的执行范围内进行定义。 
  --表达式 
  
view plaincopy to clipboardprint?
  1. with statNum(id, num) as   
  2.   (   
  3.   select cid, count(*)   
  4.   from student   
  5.   where id > 0   
  6.   group by cid   
  7.   )   
  8.   select id, num from statNum order by id;   
  9.   with statNum(id, num) as   
  10.   (   
  11.   select cid, count(*)   
  12.   from student   
  13.   where id > 0   
  14.   group by cid   
  15.   )   
  16.   select max(id), avg(num) from statNum;   
  17.     
  
  1、函数 
 
  max最大值、min最小值、count统计、avg平均值、sum求和、var求方差 
  select 
  max(age) max_age, 
  min(age) min_age, 
  count(age) count_age, 
  avg(age) avg_age, 
  sum(age) sum_age, 
  var(age) var_age 
  from student; 
 
  2、 日期时间函数 
 
  select dateAdd(day, 3, '2011-06-20');--加天 2011-06-23 00:00:00.000
  select dateAdd(year, 3, '2011-06-20');--加年 2014-06-20 00:00:00.000
  select dateAdd(hour, 3, '2011-06-20');--加小时   2011-06-20 03:00:00.000
  --返回跨两个指定日期的日期边界数和时间边界数 
  select dateDiff(day,  '2011-06-20',  '2011-06-22'); 
  --相差秒数 
  select dateDiff(second, '2011-06-22 11:00:00', getDate()); 
  --相差小时数 
  select dateDiff(hour, '2011-06-22 10:00:00', getDate()); 
  select dateName(month, getDate());--当前月份 
  select dateName(minute, getDate());--当前分钟 
  select dateName(weekday, getDate());--当前星期 
  select datePart(month, getDate());--当前月份 
  select datePart(weekday, getDate());--当前星期 
  select datePart(second, getDate());--当前秒数 
  select day(getDate());--返回当前日期天数 
  select day('2011-06-30');--返回当前日期天数 
  select month(getDate());--返回当前日期月份 
  select year(getDate());--返回当前日期年份 
  select getDate();--当前系统日期 
  函数 参数/功能
  
  GetDate( ) 返回系统目前的日期与时间
  DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
  DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
  DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
  DateName (interval,date) 返回日期date中,interval指定部分所对应的值
  
  1.jpg
  
  3、 数学函数 
 
  select pi();--PI函数 
  select rand(100), rand(50), rand(), rand();--随机数 
  select round(rand(), 3), round(rand(100), 5);--精确小数位 
  --精确位数,负数表示小数点前 
  select round(123.456, 2), round(254.124, -2); 
  select round(123.4567, 1, 2); 
 
  4、 元数据 
 
  select col_name(object_id('student'), 1);--返回列名 
  select col_name(object_id('student'), 2); 
  --该列数据类型长度 
  select col_length('student', col_name(object_id('student'), 2)); 
  --该列数据类型长度 
  select col_length('student', col_name(object_id('student'), 1)); 
  --返回类型名称、类型id 
  select type_name(type_id('varchar')), type_id('varchar'); 
  --返回列类型长度 
  select columnProperty(object_id('student'), 'name', 'PRECISION'); 
  --返回列所在索引位置 
  select columnProperty(object_id('student'), 'sex', 'ColumnId'); 
 
  5、 字符串函数 
 
  select ascii('a');--字符转换ascii值 
  select ascii('A'); 
  select char(97);--ascii值转换字符 
  select char(65); 
  select nchar(65); 
  select nchar(45231); 
  select nchar(32993);--unicode转换字符 
  select unicode('A'), unicode('中');--返回unicode编码值 
  select soundex('hello'), soundex('world'), soundex('word'); 
  select patindex('%a', 'ta'), patindex('%ac%', 'jack'), patindex('dex%', 'dexjack');--匹配字符索引 
  select 'a' + space(2) + 'b', 'c' + space(5) + 'd';--输出空格 
  select charIndex('o', 'hello world');--查找索引 
  select charIndex('o', 'hello world', 6);--查找索引 
  select quoteName('abc[]def'), quoteName('123]45'); 
  --精确数字 
  select str(123.456, 2), str(123.456, 3), str(123.456, 4); 
  select str(123.456, 9, 2), str(123.456, 9, 3), str(123.456, 6, 1), str(123.456, 9, 6); 
  select difference('hello', 'helloWorld');--比较字符串相同 
  select difference('hello', 'world'); 
  select difference('hello', 'llo'); 
  select difference('hello', 'hel'); 
  select difference('hello', 'hello'); 
  select replace('abcedef', 'e', 'E');--替换字符串 
  select stuff('hello world', 3, 4, 'ABC');--指定位置替换字符串 
  select replicate('abc#', 3);--重复字符串 
  select subString('abc', 1, 1), subString('abc', 1, 2), subString('hello Wrold', 7, 5);--截取字符串 
  select len('abc');--返回长度 
  select reverse('sqlServer');--反转字符串 
  select left('leftString', 4);--取左边字符串 
  select left('leftString', 7); 
  select right('leftString', 6);--取右边字符串 
  select right('leftString', 3); 
  select lower('aBc'), lower('ABC');--小写 
  select upper('aBc'), upper('abc');--大写 
  --去掉左边空格 
  select ltrim(' abc'), ltrim('# abc#'), ltrim(' abc'); 
  --去掉右边空格 

  select rtrim(' abc '), rtrim('# abc# '), rtrim('abc'); 

 

原文地址:http://www.itlead.com.cn/html/278/2012-04-09/content-8301.shtml