SQLServer几个好用的小知识
一、引言
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