一、引言
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.uj5u.com/shujuku/472937.html
標籤:SQL Server
