1、case语句

  • 用于选择语句    
SELECT   ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
  • 用于update操作
UPDATE HumanResources.Employee
SET VacationHours =
( CASE
WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
ELSE (VacationHours + 20.00)
END
)
OUTPUT Deleted.BusinessEntityID, Deleted.VacationHours AS BeforeValue,
Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0
  • 用户于变量赋值
    SET @ContactType =
CASE
-- Check for employee
WHEN EXISTS(SELECT * FROM HumanResources.Employee AS e
WHERE e.BusinessEntityID = @BusinessEntityID)
THEN 'Employee' -- Check for vendor
WHEN EXISTS(SELECT * FROM Person.BusinessEntityContact AS bec
WHERE bec.BusinessEntityID = @BusinessEntityID)
THEN 'Vendor' -- Check for store
WHEN EXISTS(SELECT * FROM Purchasing.Vendor AS v
WHERE v.BusinessEntityID = @BusinessEntityID)
THEN 'Store Contact' -- Check for individual consumer
WHEN EXISTS(SELECT * FROM Sales.Customer AS c
WHERE c.PersonID = @BusinessEntityID)
THEN 'Consumer'
END;
  • 项目实例
--根据类型,判断分配操作  构造操作日志表描述
set @tempopdes=case @servertype when '' then '分配客户'
when '' then '分配账号'
when '' then '分配账号'
when '' then '分配客户'
when '' then '分配客户'
when '' then '分配客户'
when '' then '分配客户'
else ''
end

2、cast和convert函数

CAST ( expression AS data_type [ ( length ) ] )
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
  • CAST

  主要在字符串拼接时转换表达式类型(expression)类型,常用把int或其他数值类型转换为varchar类型。

    CAST示例:  

SELECT DISTINCT CAST(p.Name AS char(10)) AS Name, s.UnitPrice
FROM Sales.SalesOrderDetail s JOIN Production.Product p on s.ProductID = p.ProductID
WHERE Name LIKE 'Long-Sleeve Logo Jersey, M';
  • CONVERT

  CONVERT比CAST能够转换的类型更多,更精细,经常使用是时间转换操作

  CONVERT示例:

 CONVERT(nvarchar(30), GETDATE(), 126)

  时间格式参考SQLServer联机文档

3、REVERSE反转函数

REVERSE函数操作表达式必须为字符类型或者可隐式转换为字符类型  

declare @ids varchar(200)
set @ids='中国,2你2,34,56'
select @ids
Select REVERSE(@ids)

4、CHARINDEX函数

CHARINDEX ( expression1 ,expression2 [ , start_location ] )

在expression2中从[start_location](未设置或者为负数时从0开始)开始查找expression1的位置信息,找到后立刻返回位置的值。开始位置计数为1
DECLARE @document varchar(64)

SELECT @document = 'bicycle Reflectors are vital safety' +
' bicycle components of your bicycle.'
SELECT CHARINDEX('bicycle', @document)
GO

5、其他函数
min 最小值
max 最大值
len 获得字符串长度

6、全局变量@@ROWCOUNT

  用于获得最近一次操作受影响的行数信息。

7、exec

  • 执行拼接语句  
 EXECUTE ('ALTER INDEX ALL ON ' + @schemaname + '.' + @tablename + ' REBUILD;');
  • 调用存储过程

  在exec sp_executesql @sql中变量 @sql必须声名为nvarchar类型

set @sql='select @a=SUM(mi_receivermoney) from t_money_receive where  mr_id in ('+@mr_ids+')'
exec sp_executesql @sql,N'@a decimal(18,2) output',@receivetotalmoney output

8、Try/Catch使用

  • begin try开始 end try 结束try。
  • begin catch 开始捕获,end catch 结束捕获。
  • 常用函数:   
select ERROR_NUMBER() --实际错误行号
select ERROR_SEVERITY() --错误级别
select ERROR_STATE() --表明错误发生的位置
select ERROR_LINE() --错误所在行号
select ERROR_MESSAGE() --错误消息
select ERROR_PROCEDURE() --导致错误的存储过程名称,嵌套时使用较方便

  使用try/Catch可以方便确定批处理或者存储过程中错误信息

参考资料:

  SQLServer联机文档

最新文章

  1. [LeetCode] Factorial Trailing Zeroes 求阶乘末尾零的个数
  2. 强大好用的&quot;文本&quot;编辑器
  3. php常用函数集锦[备份用的]
  4. class JOIN
  5. HTTP/2 对 Web 性能的影响(上)
  6. OSG中的示例程序简介(转)
  7. RedHat7/Windows7搭建JAVA开发环境(Eclipse)
  8. 可能性dp+减少国家HDU4336
  9. java.net.SocketException: Unconnected sockets not implemented 解
  10. Java多线程--让主线程等待所有子线程执行完毕
  11. Python3学习笔记 - 准备环境
  12. echarts词云引用
  13. [HNOI 2018]道路
  14. 使用excel整理脚本
  15. 【XSY3147】子集计数 DFT 组合数学
  16. ubuntu server 14.04 LTS下搭建LAMP环境之最详细笔记之一U盘安装双系统
  17. openfalcon架构及相关服务配置详解
  18. Java基础——javaMail:使用心得
  19. UVa 11889 最小公倍数
  20. JVM生命周期

热门文章

  1. C语言中的定义与声明
  2. Kibana 视图开发入门参考文档
  3. Gym - 101615J Grid Coloring DP 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)
  4. codeforces-473D Mahmoud and Ehab and another array construction task (素数筛法+贪心)
  5. 上传文件插件dropzone的实例
  6. SQL server 2008 r2 安装图文详解
  7. Docker &amp; ASP.NET Core 教程
  8. hdu 6287
  9. 转 使用SwingBench 对Oracle RAC DB性能 压力测试
  10. 01 性能优化基础怀实践 之 ASH分析