SQLServer几个好用的小知识

database

一、引言

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

二、好用小知识

2.1、FORMAT函数

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

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

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

SELECTCONVERT(VARCHAR(10),GETDATE(),120)

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

SELECT FORMAT(12,"000")

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

SELECTREPLICATE("0",3-LEN(12))+"12"

2.2、CONCAT函数

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

DECLARE@AVARCHAR(10)="A",@BVARCHAR(10)=NULL,@CVARCHAR(10)="C"

SELECT CONCAT(@A,@B,@C)

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

DECLARE@AVARCHAR(10)="A",@BVARCHAR(10)=NULL,@CVARCHAR(10)="C"

SELECTISNULL(@A,"")+ISNULL(@B,"")+ISNULL(@C,"")

2.3、OUTPUT子句

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

--数据表

CREATETABLE StudentA

(

ID VARCHAR(32),

Name VARCHAR(20),

Sex VARCHAR(10)

)

GO

--返回新增记录

INSERTINTO STUDENTA (ID,NAME,SEX) OUTPUT Inserted.*VALUES ("1004","赵六","")

GO

--返回更改前及更改后记录

UPDATE STUDENTA SET SEX="" OUTPUT Deleted.*,Inserted.*WHERE ID="1004"

GO

--返回删除前记录

DELETEFROM STUDENTA OUTPUT Deleted.*WHERE ID="1004"

GO

2.4、timestamp类型

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

--数据表

CREATETABLE[dbo].[StudentA](

[ID][VARCHAR](32) NULL,

[Name][VARCHAR](20) NULL,

[Sex][VARCHAR](10) NULL,

[TS][TIMESTAMP]NULL

) ON[PRIMARY]

GO

INSERTINTO STUDENTA (ID,NAME,SEX) VALUES ("1001","张三","")

SELECT*FROM STUDENTA

GO

UPDATE STUDENTA SET SEX=""WHERE ID="1001"

SELECT*FROM STUDENTA

GO

 

以上是 SQLServer几个好用的小知识 的全部内容, 来源链接: utcz.com/z/536512.html

回到顶部