sqlserver各个版本的功能对比(Server几个好用的小知识)

一、引言

SQL Server有一些很好用的功能,只不过由于个人原因没用过或者不记得怎么用,导致需要花点时间用其它方式来实现。

二、好用小知识2.1、FORMAT函数

1)时间格式化,如将当前日期格式化为2022-05-12:

SELECT FORMAT(GETDATE(),'yyyy-MM-dd')

不用FORMAT函数的话,我经常是这样转换:

SELECT CONVERT(VARCHAR(10),GETDATE(),120)

2)数字前补0,这个在单号流水码中比较常用,如保留3位流水码:

SELECT FORMAT(12,'000')

不用FORMAT函数的话,我经常是这样转换:

SELECT REPLICATE('0',3-LEN(12)) '12'

2.2、CONCAT函数

1)字符串连接,有NULL值不需要转换:

DECLARE @A VARCHAR(10)='A',@B VARCHAR(10)=NULL,@C VARCHAR(10)='C' SELECT CONCAT(@A,@B,@C)

不用CONCAT函数的话,我经常是这样转换:

DECLARE @A VARCHAR(10)='A',@B VARCHAR(10)=NULL,@C VARCHAR(10)='C' SELECT ISNULL(@A,'') ISNULL(@B,'') ISNULL(@C,'')

2.3、OUTPUT子句

1)返回增、删、改记录:

sqlserver各个版本的功能对比(Server几个好用的小知识)(1)

--数据表 CREATE TABLE StudentA ( ID VARCHAR(32), Name VARCHAR(20), Sex VARCHAR(10) ) GO --返回新增记录 INSERT INTO STUDENTA (ID,NAME,SEX) OUTPUT Inserted.* VALUES ('1004','赵六','女') GO --返回更改前及更改后记录 UPDATE STUDENTA SET SEX='男' OUTPUT Deleted.*,Inserted.* WHERE ID='1004' GO --返回删除前记录 DELETE FROM STUDENTA OUTPUT Deleted.* WHERE ID='1004' GO

sqlserver各个版本的功能对比(Server几个好用的小知识)(2)

2.4、timestamp类型

1)表⾏加版本戳,插入时自动产生TS,更改数据时,TS也会跟着更新。

sqlserver各个版本的功能对比(Server几个好用的小知识)(3)

--数据表 CREATE TABLE [dbo].[StudentA]( [ID] [VARCHAR](32) NULL, [Name] [VARCHAR](20) NULL, [Sex] [VARCHAR](10) NULL, [TS] [TIMESTAMP] NULL ) ON [PRIMARY] GO INSERT INTO STUDENTA (ID,NAME,SEX) VALUES ('1001','张三','男') SELECT * FROM STUDENTA GO UPDATE STUDENTA SET SEX='女' WHERE ID='1001' SELECT * FROM STUDENTA GO

sqlserver各个版本的功能对比(Server几个好用的小知识)(4)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页