大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说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
原文地址:https://www.cnblogs.com/atomy/archive/2022/05/12/16263832.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5271.html