SQL Server 2012 新特性

时间:2021-01-24 16:23:17
--Concat示例
Select CONCAT('SQL Server',2012,null,'RTM') --Format实例
DECLARE @d DATETIME = GETDATE();
SELECT FORMAT( @d, 'd', 'en-US' ) AS Result
SELECT FORMAT( @d, 'd', 'zh-CN' ) AS Result --Choose实例
SELECT CHOOSE(0,'CareySon','Jack','Tony','Peter')
SELECT CHOOSE(2,'CareySon','Jack','Tony','Peter')
SELECT CHOOSE(3,'CareySon','Jack','Tony','Peter')
SELECT CHOOSE(5,'CareySon','Jack','Tony','Peter')
--Choose
select CHOOSE(ManagerID,'CareySon','Jack','Tony','Peter')
FROM [AdventureWorks].[HumanResources].[Employee]
--传统的CASE...WHEN
SELECT ManagerID=case when ManagerID=1 then 'CareySon'
when ManagerID=2 then 'Jack'
when ManagerID=3 then 'Tony'
when ManagerID=4 then 'Peter'
else null
end
FROM [AdventureWorks].[HumanResources].[Employee] --IIF示例
select IIF(1>2,'结果1','结果2') --DATEFROMPARTS示例
SELECT DATEFROMPARTS ( 2012, 3, 12 ) AS Result; --EOMONTH示例
declare @date datetime
set @date='2012-3-12'
SELECT EOMONTH ( @date ) AS '本月最后一天'
SELECT EOMONTH ( @date, 1 ) AS '下个月最后一天'
SELECT EOMONTH ( @date, -1 ) AS '上个月最后一天' --PARSE和Cast示例
SELECT TRY_PARSE('Monday, 13 December 2010' AS datetime2 USING 'en-US') AS Result
SELECT Cast('Monday, 13 December 2010' AS datetime2) AS Result --Convert和Try_Convert示例
--转换不成功,为NULL
select TRY_CONVERT(float, 'test')
--转换不成功报错
select CONVERT(float, 'test')
--永远不可能转换成功的,报错
SELECT TRY_CONVERT(xml, 4) AS Result; --TRY_PARSE和PARSE
SELECT TRY_PARSE('错误值' AS datetime2 USING 'en-US') AS Result
SELECT PARSE('错误值' AS datetime2 USING 'en-US') AS Result --Throw语句尝试
--1.更简洁优雅的代码
--2.可以正确的标识出出错的行数,对于大量T-SQL来说,这点可以节省不少时间 BEGIN TRAN
BEGIN TRY
select 1/0;
COMMIT
END TRY
BEGIN CATCH
ROLLBACK;
--RAISERROR('自定义错误消息',12,1)
--THROW
THROW 50001,'自定义错误消息',1;
--PRINT ERROR_NUMBER+ERROR_SEVERITY()+ERROR_STATE()+ERROR_PROCEDURE()+ERROR_LINE()+ERROR_MESSAGE()
END CATCH