SQL 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)返回增、删、改记录:
--数据表 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
2.4、timestamp类型
1)表⾏加版本戳,插入时自动产生TS,更改数据时,TS也会跟着更新。
--数据表 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-05-12 C# Log4Net学习笔记:记录日志到数据库