日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

常用SQL Server 小语法、函数 等的实例汇总

發布時間:2025/3/19 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用SQL Server 小语法、函数 等的实例汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

重點內容常用SQL Serve函數及語法的部分實例匯總
本文介紹SQL Server 中常用的幾種函數:

函數一ISNULL (check _ expression, replacement _ value)

ISNULL()使用指定的替換值替換 NULL。
check _ expression用來檢查判斷字段或變量,判斷是否為空,如果為空,則用replacement _ value來替換他;如果不為空,那么返回check _ expression。
舉例說明:

上圖中,執行董事長disabled是1,意思是該崗位已經被撤銷。如果要顯示出來所有存在的崗位,可以用到ISNULL。

SELECT * FROM TABLE WHERE ISNULL(Disabled,0)=0

這樣就可以把執行董事去掉了。

函數二CAST (expression AS data _ type)

CAST() 是將一種數據類型的表達式轉換為另一種數據類型的表達式。
舉例說明:
1010068,取這個數字的右邊五位,因為這是個int整形,直接取得話肯定取不到,需要轉化為varchar。

right (cast (1010068 as varchar(10)),5)

函數三RIGHT(str, len)

RIGHT()的功能是將一個字符串從右邊數len 個字符 (從1開始)進行返回。如果 string 參數中包含Null,則返回 Null。Length指明要返回的字符數目,如果為 0,返回零長度字符串;如果此數大于或等于 string 參數中的所有字符數目,則返回整個字符串。
類似的還有left(str,len),這里就不做例子說明了。

函數四DATEDIFF(datepart, startdate, enddate)

DATEDIFF()是日期計算函數,函數返回兩個日期之間的時間。
detepart 是要比較的日期類型:

stratdate是開始時間,enddate是結束時間,計算過程是結束時間減去開始時間,enddate-stratdate,可以根據結果的正負值進行一些常規判斷。

SELECT DATEDIFF(d,'2008-5-29','2008-12-30') AS DiffDate

函數五DATEADD(datepart,number,date)

DATEADD()是在日期中添加或減去指定的時間間隔。
Datepart的類型和作用同上,number是要添加的數量,date是要添加的時間基礎。
DATEADD(d,1,getdate()) 可以得到明天的日期。
PS(getdaste() 獲取系統的時間)。

函數六CHARINDEX ( expression1,expression2[ ,start_location ])

CHARINDEX()是返回字符或者字符串在另一個字符串中的起始位置。expression1 是要查找的字符串,expression2是要查找的字符串元,start_location 是查找的起始位置,默認沒有的話是從0開始,也就是開頭。
返回值是找到的位置,例如

CHARINDEX('SQL', 'Microsoft SQL Server')

結果就是11。

函數七ROUND ( numeric_e-xpression , length [ , function ] )

返回數字表達式并四舍五入為指定的長度或精度。

numeric_e-xpression: 要進行四舍五入的表達式 ;
length: 要四舍五入的精度;
function: 要執行的操作類型,當指定 0 以外的值時,將截斷 numeric_e-xpression;
返回值是與 numeric_e-xpression 一樣的類型。
舉例說明:

SELECT ROUND(123.75633, 2, 1), ROUND(123.75633, 2)

前一個是:123.75000,后一個是:123.76000。
因為前者在進行四舍五入之前,小數點后已經被截取,保留了2位。
而后者則沒有被截取,四舍五入時自然就會得到123.76000
注釋:
ROUND 始終返回一個值。如果 length 是負數且大于小數點前的數字個數,ROUND 將返回 0。
示例 結果
ROUND(748.58, -4) 0
當 length 是負數時,無論什么數據類型,ROUND 都將返回一個四舍五入的 numeric_e-xpression。
示例 結果
ROUND(748.58, -1) 750.00
ROUND(748.58, -2) 700.00
ROUND(748.58, -3) 1000.00
PS(摘錄自http://blog.csdn.net/feixianxxx/article/details/4423676)

函數八ceiling()和floor()

ceiling(3.32):向上取整,結果是4;floor(3.32):向下取整,結果是3。

函數九EXISTS()

定義:用于檢查子查詢是否至少會返回一行數據,該子查詢實際上并不返回任何數據,而是返回值True或False。*if exists(select * from table)* 可以用來進行判斷。另一種用法where里面,例如兩個表圖書表![圖書表](https://img-blog.csdn.net/20170523173650696?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzI1NDMzNzc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)借閱表![借閱表](https://img-blog.csdn.net/20170523173710337?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzI1NDMzNzc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

查找借閱過得書

select * from book where exists(select * from borrow as b where book.BID=b.BID)

等同于:

select * from book where BID in (select BID from borrow)

函數十SUBSTRING(expression, start, length)

相當于字符串截取函數
expression:字符元或者是字段名;
start:截取的起始位置,從0開始;
length:截取的長度;
例如:select SUBSTRING(‘ceshi ‘, 1, 2)
結果就是ce

函數十一replace(string1,string2,string3)

在字符串sting1中尋找是sting2 字符串 并用string3 替換它。
for examp:
select replace ('abcdefgabc','abc','123');
結果是:123defg123

函數十二ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

解釋:row_number () 從1 開始給每一條記錄返回一個數字;
partition by column 對該字段相同的行,進行了統計;
order by column 對字段進行分組并排序。

## **

小方法

##
1、 獲取特定月份的一號到31號或者25號到下個月26號

DateAdd(Day,0,DateAdd(Month,Datediff(Month,0,@P_TERM),0)) --月1號DateAdd(Day,0,DateAdd(Month,Datediff(Month,0,@P_TERM)+1,-1)), --月最后一天DateAdd(Day,0,DateAdd(Month,Datediff(Month,0,@P_TERM),25)) --24號 DateAdd(Day,0,DateAdd(Month,Datediff(Month,0,@P_TERM)+1,+25)), --次月26號

2、判斷某個日期是否是周六

DATEPART(WEEKDAY,DATEADD(DAY,0,@time))=7

1——-周天
2——-周一
3——-周二
4——-周三
5——-周四
6——-周五
7——-周六

3、遞歸運算

WITH cteTreeAS (SELECT EV_MD_Employee.EmpID,EV_MD_Employee.ParentEmp FROM EV_MD_Employee WHERE ParentEmp = @empid --第一個查詢作為遞歸的基點(錨點) UNION ALL SELECT EV_MD_Employee.EmpID ,EV_MD_Employee.ParentEmp --第二個查詢作為遞歸成員, 下屬成員的結果為空時,此遞歸結束。 FROM cteTree INNER JOIN EV_MD_Employee ON cteTree.EmpID= EV_MD_Employee.ParentEmp) SELECT * FROM cteTree

4、橫表轉縱表

select id,name,quarter,profile ---quarter,profile,固定列from testunpivot(profilefor quarter in ([Q1],[Q2],[Q3],[Q4])--括號里面是橫表的字段)as unpvt --最后可以加where條件


轉換后

5、修改表名

EXEC sp_rename ‘表名.[原列名]’, ‘新列名’, ‘column’

sp_rename –更改當前數據庫中用戶創建對象(如表、列或用戶定義數據類型)的名稱。

轉載于:https://my.oschina.net/u/3587551/blog/1555405

總結

以上是生活随笔為你收集整理的常用SQL Server 小语法、函数 等的实例汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。