别名可与原名用空格隔开代替as
获取字符串长度用len(字段)
- sql 列出一年的月份数
SELECT Number [MONTH] FROM master..spt_values WHERE Number BETWEEN 1 AND 12 AND type = 'P';
- SQL查询结果,某字段添加后缀(注意函数不可拼接,查询结果重命名重新取出拼接,标红处为拼接函数concat(拼接字符,字段,拼接字符)),concat可加前后缀,不添加前后缀字符则不加前后缀。
SELECT concat(a.[MONTH],'月') AS '月' from (SELECT Number [MONTH] FROM master..spt_values WHERE Number BETWEEN 1 AND 12 AND type = 'P') as a;
- SQL--while循环
DECLARE @i int --声明变量 DECLARE @s int --声明变量 set @i=1 --变量赋值 set @s=1 --变量赋值 WHILE @i<100 --循环条件 BEGIN SET @i=@i+1 --操作 SET @s=@i+@s --操作 END PRINT @s --打印结果
- datepart与datename可以获取时间字段中的年、月、日……,只是datepart获取的是时间的数字,而datename获取的是字符串(字符串显示各语言版本有别)
SELECT PTime as '日期', DATEPART(yy,PTime) as '年yy', DATEPART(yyyy,PTime) as '年yyyy', DATEPART(qq,PTime) as '季qq', DATEPART(q,PTime) as '季q', DATEPART(mm,PTime) as '月mm', DATEPART(m,PTime) as '月m', DATEPART(dy,PTime) as '年中第dy日', DATEPART(y,PTime) as '年中第y日', DATEPART(dd,PTime) as '日dd', DATEPART(d,PTime) as '日d', DATEPART(wk,PTime) as '年中第wk周', DATEPART(ww,PTime) as '年中第ww周', DATEPART(dw,PTime) as '星期dw', DATEPART(w,PTime) as '星期w' FROM pTable;
Datepart
Datename
缩写
年
year
yy, yyyy
季度
quarter
qq, q
月
month
mm, m
年中的日
dayofyear
dy, y
日
day
dd, d
周
week
wk, ww
星期
weekday
dw, w
小时
Hour
hh
分钟
minute
mi, n
秒
second
ss, s
毫秒
millisecond
ms
微妙
……
mcs
纳秒
……
ns
- 条件语句 case when,第二种更实用
(1). select case 字段
when 字段值 then 结果
else 结果
end from 表
相当于筛选某字段值返回一个结果
(2). select case
when 条件 then 结果
when 条件 then 结果
else 结果
end from 表
- 条件语句IF ELSE
IF 条件
BEGIN
查询语句
ENDELSE IF条件
BEGIN
查询语句
ENDELSE
BEGIN
查询语句
END - 字符串去除中间某段
SELECT concat (--concat字符拼接,此处用来拼接截取字符前段和后段 SUBSTRING ( --SUBSTRING字符截取, Name, --截取字符的来源 0, --截取字符的起始位置 CHARINDEX( '小区智', Name ) --截取字符的长度,此处CHARINDEX用来获取字符串的位置用法CHARINDEX(要查询的字符串,查询的字符串来源) ), SUBSTRING ( Name, CHARINDEX( '小区智', Name ) + 3,--要去除的字符串长度为多少则加多少 LEN( Name ) - CHARINDEX( '小区智', Name )) --len,获取总字符串长度,减去前面已处理字段 ), Name --查出原字段用于对比 FROM test;