FOR XML PATH
利用 T-sql 的从句 for xml path(‘‘) 实现多行合并到一行, 并带有分隔符
https://blog.csdn.net/rav009/article/details/50723307
SELECT ‘,‘ + au.UserCode FROM dbo.AcceptanceUser au FOR XML PATH (‘‘) SELECT STUFF((SELECT ‘,‘ + au.UserCode FROM dbo.AcceptanceUser au FOR XML PATH (‘‘)), 1, 1, ‘‘)
select GETDATE() select STR(YEAR(GETDATE())) select RTRIM(STR(YEAR(GETDATE()))) select LTRIM(RTRIM(STR(YEAR(GETDATE()))))
WITH (NOLOCK)
除了简单的SELECT之外,有JOIN的SELECT语法也是可以使用的。但是DELETE、INSERT、UPDATE这些需要transaction的指令就不行了
@@IDENTITY
Select SCOPE_IDENTITY()
返回上面操作最后一个数据表的最后row的IDENTITY 列的值;
isnull()函数:
isnull(value1,value2)
1、value1与value2的数据类型必须一致。
2、如果value1的值不为null,结果返回value1。
3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。
Replace
WITH 表名字 AS
with table1 as ( select * from Student where sage < 30 ) select * from table1 -- 使用了名为table1的公共表表达式
RowNumber
Convert
DISTINCT
if...eles
IF(条件表达式) BEGIN --相当于C#里的{ 语句1 …… END --相当于C#里的} ELSE BEGIN 语句1 …… END
declare
DECLARE @sql VARCHAR(8000) DECLARE @start_row_num AS INT
case
select SName,Sage=( case Sage when 17 then ‘小‘ when 18 then ‘正好‘ when 19 then ‘大‘ end ) from [SCST].[dbo].[Student]
dense_rank()
SELECT dense_rank() OVER (ORDER BY u.TotalValue DESC) AS Rank,
select和SET的区别
CAST 和 CONVERT
SELECT CAST(SYSDATETIME() AS DATE); SELECT CONVERT(CHAR(8),CURRENT_TIMESTAMP,112);
select CAST(CONVERT(VARCHAR(12), getdate(), 111) AS DATE)
需要注意的是,CAST是ANSI标准的SQL,而CONVERT不是。所以,除非需要使用样式值,否则推荐优先使用CAST函数,以保证代码尽可能与标准兼容。
CROSS APPLY
SQL中PIVOT 行列转换
https://www.cnblogs.com/zouhao/p/6050809.html
子查询
单值子查询
多值子查询
Exists
exists是用来判断是否存在的,当exists查询中的查询存在结果时则返回真,否则返回假。not exists则相反。
exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。
exists后面的查询称为相关子查询,即子查询的查询条件依赖于外层父查询中的某个属性值,其处理过程一般为:先取外层查询中的第一个元组,根据它与内层查询中的相关属性值处理内层查询,若where子句返回true,则将此元组放入结果表中,然后取外层查询中的下一个元组,重复这个过程直到全部检查完毕为止。
例如:我们有一张人员信息表,里边有一个人员类型Id字段(pTypeId),它是一个外键,对应着人员类型表的主键ptId。如果我们有以下的SQL语句,使用Exists关键字则可以有如下的理解:
select * from Employee e where exists (select * from EmployeeType et where e.pTypeId=et.ptId)
那么,在这句SQL的执行过程中,我们可以将其理解为一个双重的for循环,外边是主表的循环遍历,然后将其放到一个temp变量中,再进入从表的for循环,并与从表的项进行一个一个的按照匹配规则(这里是e.pTypeId=et.ptId)进行匹配,如果有匹配成功则返回true,并且将这一行记录放到要返回的结果集中,否则返回false。
https://www.cnblogs.com/edisonchou/p/3930414.html
isnull
WITH t AS
row_number()
CASE WHEN
join
LEFT JOIN
dense_rank()
SELECT dense_rank() OVER (ORDER BY v.TotalValue DESC) AS Rank,
透视转换技术
https://www.cnblogs.com/yuanzijian-ruiec/p/9457366.html
标量函数
表值函数
原文地址:https://www.cnblogs.com/cnki/p/9495515.html