码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server进阶(十四)常用函数

时间:2019-01-12 00:15:55      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:number   temp   iso   user   ...   否则   外键   区别   net   

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

标量函数

表值函数

 

SQL Server进阶(十四)常用函数

标签:number   temp   iso   user   ...   否则   外键   区别   net   

原文地址:https://www.cnblogs.com/cnki/p/9495515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!