Sql小技巧

1.CTE

with
as雷同于临时表,子查询,但它整句只也就是一句sql语句,复合查询时很好用

图片 1图片 2

1 with cr as
2 (select * from a)
3 select * from cr

CTE

回到钦点表明式中某形式第壹遍现身的起头地方;假若在全方位管用的文书和字符数据类型中从未找到该情势,则赶回零。

2.PATINDEX  

归来钦定表明式中某形式第贰次出现的胚胎地点;假设在全数灵光的公文和字符数据类型中从未找到该情势,则赶回零。
基本语法:PATINDEX
( ‘%pattern%’ , expression 卡塔尔(قطر‎
pattern:字符串。能够采纳通配符,但
pattern 在此以前和之后必须有 %
字符(找寻第一个和尾声三个字符时除了)。pattern
是短字符数据类型类其余表明式
expression:表达式,平常为要在其间找出钦点方式的列,expression
为字符串数据类型种类

图片 3图片 4

1 patindex('%[^0-9|\.]%',name)  --获取第一个非数字和点的字符的位置

PATINDEX

 Transact-SQL 语法约定

 3.PARTITION BY

PARTITION
BY是分组,GROUP BY 是分组聚合

图片 5图片 6

 1 NAME SCORE
 2 A      13
 3 B      34
 4 A      56
 5 B      68
 6 C       4
 7 SELECT NAME,ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY SCORE) rownum FROM dbo.USERS
 8 NAME rownum
 9 A        1
10 A        2
11 B        1
12 B        2
13 C        1

PARTITION BY

语法
 
PATINDEX ( ‘%pattern%’ , expression )
 

 4.rowcount与@@rowcount

rowcount限制之后语句影响的行数,与top大约,但top影响的行数不可能用变量,rowcount能够;@@rowcount重返上一句sql影响的数据行数。

图片 7图片 8

1 set rowcount 10
2 select * from 表A--返回10条数据
3 
4 select  * from 表A
5 select @@Rowcount --返回表A的行数

View Code

 

备注
纵然 pattern 或 expression 为 NULL,则当数据库的协作等第为 70
时,PATINDEX 将赶回 NULL;倘诺数据库包容等第小于或等于 65,则仅当
pattern 和 expression 同一时间为 NULL 时,PATINDEX 才回来 NULL。

5.剔除除了活动编号分化, 其余都后生可畏致的学员冗余音讯

delete tablename where  ID  not in(select min( ID) from tablename group by学号, 姓名, 课程编号, 课程名称, 分数)

 

PATINDEX
基于输入的排序准则推行比较。若要以钦定排序法则举办相比,则能够利用
COLLATE 将显式排序准则应用于输入值。

6.复制(备份)表(只复制构造,源表名:a  新表名:b卡塔尔国 

select * into b from a where 1<>1   (where1=1,拷贝表结构和数据内容)

 

参数
pattern
三个文字字符串。能够采纳通配符,但 pattern 以前和未来必须有 %
字符(搜索第二个或最终叁个字符时除了)。pattern
是字符串数据类型类其他表明式。

expression
一个表明式,经常为要在里头寻觅钦命格局的列,expression
为字符串数据类型体系。

发表评论

电子邮件地址不会被公开。 必填项已用*标注