SqlSever常用的函數方法

前言:以前那家公司用linq查詢比較多很少用到sql拼接 sql水平一直也就那樣 後來的這家公司業務基本寫在存儲過程中 所以開始寫sql的漫漫長路

查詢表註釋/查詢年月

--查詢表註釋
Select sc.NAME,dc.ColumnName_Cn,t.name as ColumnType,t.length as ColumnWidth,case when sc.isnullable=1 THEN 'TRUE' ELSE 'FALSE' END AS yxnnull,dc.DefaultValue,dc.Remarks
from syscolumns sc
left outer join systypes t on sc.xtype=t.xtype 
LEFT JOIN Data_Dict_Columns dc ON sc.name=dc.ColumnName AND dc.TableName='InvoiceMainBody'
Where sc.ID=OBJECT_ID('InvoiceMainBody')
ORDER BY colid
--InvoiceMainBody指表名

select dateadd(month, datediff(month, 0, getdate()), 0)  --當月第一天

select dateadd(month, datediff(month, 0, dateadd(month, 1, getdate())), -1)  --當月最後一天

select dateadd(year, datediff(year, 0, getdate()), 0)  --當年第一天

SELECT dateadd(year, datediff(year, 0, dateadd(year, 1, getdate())), -1)  --當年最後一天

SELECT GETDATE()   --查詢當前時間

SELECT datepart(yy,'2017-1-1') --截取年份 返回:2017

一些常用的函數

DATEADD()函數
--語法
DATEADD(datepart,number,date)

date:參數是合法的日期表達式
number:是希望添加的間隔數,對於未來的時間,此數是正數,對於過去的時間,此數是負數。
datepart 參數可以是下列的值:

datepart
季度 qq, q
yy, yyyy
年中的日 dy, y,day
mm, m
dd, d
wk, ww
星期 dw, w
小時 hh
分鐘 mi, n
ss, s
毫秒 ms
微妙 mcs
納秒 ns

exp:

DECLARE @endtime='2001-1-1'
SELECT @endtime=DATEADD(DAY,1,@endtime)
--返回:2001-1-2

CAST()函數

--語法
CAST (expression AS data_type)

expression:任何有效的SQServer表達式。
AS:用於分隔兩個參數,在AS之前的是要處理的數據,在AS之後是要轉換的數據類型。
data_type:目標系統所提供的數據類型,必須char,int等

exp:

DECLARE @startTime DATETIME='2018-2-1'
CAST(@startTime AS VARCHAR(30))
--@startTime從DATETIME類型轉換爲VARCHAR類型

ISNULL()函數

--語法
ISNULL ( check_expression , replacement_value )

check_expression將被檢查是否爲 NULL的表達式。check_expression 可以是任何類型的。replacement_value在 check_expression 爲 NULL時將返回的表達式。replacement_value 必須與check_expresssion 具有相同的類型。
如果 check_expression 不爲 NULL,那麼返回該表達式的值;否則返回 replacement_value。

exp:

DECLARE @salesman varchar(50)=null
select isnull(@salesman,'helloworld')
--返回helloworld

臨時表的創建

--創建臨時表
--本地臨時表的名稱以單個數字符號 (#) 爲標識,它們僅對當前的用戶連接(也就是創建本地臨時表的connection)是可見;當用戶從 SQL Server 實例斷開連接時被刪除。
CREATE TABLE #Temp
(
    id int,
    customer_name nvarchar(50),
    age int
)

--全局臨時表的名稱以兩個數字符號 (##) 爲標識,創建後對任何數據庫連接都是可見的,當所有引用該表的數據庫連接從 SQL Server 斷開時被刪除。
CREATE TABLE ##Temp
(
    id int,
    customer_name nvarchar(50),
    age int
)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章