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

歡迎訪問 生活随笔!

生活随笔

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

数据库

SQL常用函数及使用案例

發布時間:2024/1/8 数据库 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL常用函数及使用案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL常用函數及使用案例

  • 分組排序函數
  • CONCAT連接函數
  • MERGE
  • LEN
  • RIGHT
  • LEFT
  • SUBSTRING
  • ISNULL
  • COALESCE
  • GETDATE
  • YEAR
  • MONTH
  • DAY
  • ISDATE
  • DATENAME
  • DATEPART
  • PARSENAME
  • QUOTENAME
  • REPLICATE
  • REVERSE
  • SPACE
  • ASCII
  • UNICODE
  • CHAR
  • NCHAR
  • REPLACE
  • RTRIM
  • LTRIM
  • UPPER
  • LOWER
  • STUFF
  • CHARINDEX
  • SOUNDEX
  • DIFFERENCE
  • STR
  • PATINDEX
  • 未完待續...

分組排序函數

  • ROW_NUMBER() OVER (PARTITION BY 分組字段 ORDER BY 排序字段 DESC)
--以[性別]分組,[入職時間]進行倒序排序 SELECT *, ROW_NUMBER() OVER (PARTITION BY [性別] ORDER BY [入職時間] DESC) [Rank] FROM [Test].[dbo].[Test.Source]
  • 分組排序前:
  • 分組排序后:

CONCAT連接函數

--直接連接 SELECT CONCAT(N'A', N'B') --返回AB --以_為分隔符連接 SELECT CONCAT_WS(N'_',N'A', N'B') --返回A_B

MERGE

  • MERGE能將INSERT、UPDATE、DELETE簡單地合并為一句。根據源表與目標表連接的結果,對目標表執行插入、更新、刪除操作。MERGE函數的使用場景有:數據同步、數據轉換、基于源表對目標表做INSERT、UPDATE、DELETE操作。
MERGE INTO [Test].[dbo].[Test.Target] AS T USING [Test].[dbo].[Test.Source] AS S --通過工號連接源表與目標表 ON T.[工號] = S.[工號] --當目標表中的工號與源表中的工號匹配時,目標表中有關工號的工齡將會按照源表中的工齡更新 WHEN MATCHED THEN UPDATE SET T.[工齡]=S.[工齡] --當源表中的工號沒有與目標表中的工號匹配時,將會向目標表中插入源表中相關工號的記錄 WHEN NOT MATCHED THEN INSERT VALUES(S.[工號],S.[姓名],S.[性別],S.[工齡],S.[入職時間]) --當目標表中的工號沒有與源表中的工號匹配時,將會刪除目標表中相關工號的記錄 WHEN NOT MATCHED BY SOURCE THEN DELETE;
  • MERGE操作前
  • MERGE操作后
  • 3行受影響,第一行為目標表中工號為1的記錄在源表中存在,則更新目標表中工號為1的員工工齡;第二行為源表中工號為2的記錄在目標表中不存在,則向目標表中插入源表中工號為2的記錄;第三行為目標表中工號為3的記錄在源表中不存在,則刪除目標表中工號為3的記錄。執行結果如下:

LEN

--LEN():返回指定字符串的長度,字符串的前導空格計算在內,尾隨空格忽略不計 SELECT LEN(N'ABC') --返回字符串長度3 SELECT LEN(N' ABC') --返回字符串長度6,包含前導空格 SELECT LEN(N'ABC ') --返回字符串長度3,不包含未遂空格

RIGHT

--RIGHT():返回指定字符串右側指定長度的字符串 SELECT RIGHT(N'TEST', 2) --返回ST

LEFT

--LEFT():返回指定字符串左側指定長度的字符串 SELECT LEFT(N'TEST', 2) --返回TE

SUBSTRING

--SUBSTRING():返回指定字符串中指定截取起始位置和指定長度的字符串 SELECT SUBSTRING(N'TEST', 2, 2) --返回ES

ISNULL

--ISNULL():判斷第一個參數是否為空(NULL),如是,則返回第二個參數,如否,則返回第一個參數 SELECT ISNULL(N'', 'A') --返回空字符串 SELECT ISNULL(NULL, 'A') --返回A SELECT ISNULL(N'A', 'B') --返回A SELECT ISNULL(NULL, NULL) --返回NULL

COALESCE

--COALESCE():返回所有參數里第一個為非空(NOT NULL)的參數,參數個數至少兩個,至多N個 SELECT c(N'A', N'') --返回A SELECT COALESCE(NULL, N'') --返回空字符串 SELECT COALESCE(NULL, NULL, N'A', N'B') --返回A

GETDATE

--GETDATE():獲取當前日期及時間 SELECT GETDATE() --返回當前日期及時間

YEAR

--YEAR():返回指定日期表達式的年 SELECT YEAR(N'2022-03-16') --返回2022 SELECT YEAR(N'2022-03-16 11:00:05.800') --返回2022 SELECT YEAR(GETDATE()) --返回當前日期及時間的年

MONTH

--MONTH():返回指定日期表達式的月 SELECT MONTH(N'2022-03-16') --返回3 SELECT MONTH(N'2022-03-16 11:00:05.800') --返回3 SELECT MONTH(GETDATE()) --返回當前日期及時間的月

DAY

--DAY():返回指定日期表達式的日 SELECT DAY(N'2022-03-16') --返回16 SELECT DAY(N'2022-03-16 11:00:05.800') --返回16 SELECT DAY(GETDATE()) --返回當前日期及時間的日

ISDATE

--ISDATE():判斷指定的字符串是否為日期,如是,返回1,如否,返回0,日期分隔符“-”換成“/”,返回結果一致 SELECT ISDATE(N'2022-03-16') --年-月-日 返回1 SELECT ISDATE(N'03-16-2022') --月-日-年 返回1 SELECT ISDATE(N'16-2022-03') --日-年-月 返回0 SELECT ISDATE(N'16-03-2022') --日-月-年 返回0 SELECT ISDATE(N'2022-03-16 11:00:05.800') --年-月-日 返回1 SELECT ISDATE(N'2022-03-16 11:00:05.800') --月-日-年 返回1 SELECT ISDATE(N'2022-02-29') --判斷閏年,2022年非閏年,返回0

DATENAME

--DATENAME():返回第二個參數中第一個參數所指定的值 SELECT DATENAME(YEAR, N'2022-03-16 11:00:05.800') --返回第二個參數值中第一個參數YEAR所指定的年 SELECT DATENAME(YY, N'2022-03-16 11:00:05.800') --YEAR可以為縮寫形式YY

  • 縮寫對應表格

DATEPART

--DATEPART():返回第二個參數中第一個參數所指定的整數,與DATENAME()使用方式類似,區別在于兩者返回類型不同 SELECT DATEPART(HH, N'2022-03-16 11:00:05.800') --返回11

PARSENAME

--PARSENAME():倒著截取以“.”作為分割的字符串,僅支持4位 SELECT PARSENAME(N'192.168.0.1', 1) COLUMN4 --返回第4位,PARSENAME(N'192.168.0.1', 2) COLUMN3 --返回第3位,PARSENAME(N'192.168.0.1', 3) COLUMN2 --返回第2位,PARSENAME(N'192.168.0.1', 4) COLUMN1 --返回第1位

QUOTENAME

--QUOTENAME():根據指定的分隔符,返回字符串標識符,分隔符未指定時默認[] SELECT QUOTENAME(N'A', N'') --返回[A] SELECT QUOTENAME(N'A', N'[]') --返回[A] SELECT QUOTENAME(N'A', N'''') --返回'A' SELECT QUOTENAME(N'A', N'""') --返回"A" SELECT QUOTENAME(N'A[]B', N'[]') --返回[A[]]B],]]表示轉義字符

REPLICATE

--REPLICATE():返回指定字符串指定重復次數后的字符串 SELECT REPLICATE(N'A', 3) --返回AAA SELECT REPLICATE(N'AB', 3) --返回ABABAB

REVERSE

--REVERSE():返回指定字符串的逆序字符串 SELECT REVERSE(N'123') --返回321 SELECT REVERSE(N'ABC') --返回CBA

SPACE

--SPACE():指定空格的個數 SELECT N'1'+SPACE(5)+N'2' --返回1 2 SELECT LEN(N'A'+SPACE(5)+N'B') --返回7

ASCII

--ASCII():返回指定字符串或字符串中第一個字符的ASCII碼 SELECT ASCII(N'A') --返回A的ASCII碼65 SELECT ASCII(N'AB') --返回字符串中第一個字符的ASCII碼65

UNICODE

--ASCII()用于操作單字節,雙字節采用UNICODE() --UNICODE():根據UNICODE標準返回指定字符或字符串中第一個字符的INT整數值 SELECT UNICODE(N'A') --返回字符對應的整數值65 SELECT UNICODE(N'ABC') --返回字符串中第一個字符對應的整數值65

CHAR

--CHAR():返回指定ASCII碼對應的字符,范圍為0-255,越界返回NULL SELECT CHAR(65) --返回ASCII碼值為65所對應的字符A SELECT CHAR(256) --越界返回NULL

NCHAR

--NCHAR():根據UNICODE標準返回指定INT整數值代碼的UNICODE字符 SELECT NCHAR(N'65') --返回字符A

REPLACE

--REPLACE():用第三個字符串替換出現在第一個字符串中所有的第二個字符串 SELECT REPLACE(N'ABCB', N'B', N'D') --返回ADCD SELECT REPLACE(N'ABBC', N'B', N'') --用空字符串替換指定字符串,返回AC

RTRIM

--RTRIM():返回字符串去除尾隨空格之后的字符串 SELECT RTRIM(N'ABC ') --返回ABC SELECT LEN(RTRIM(N'ABC ')) --返回3

LTRIM

--LTRIM:返回字符串去除前導空格之后的字符串 SELECT LTRIM(N' ABC') --返回ABC SELECT LEN(N' ABC') --返回8 SELECT LEN(LTRIM(N' ABC')) --返回3

UPPER

--UPPER():返回指定英文字符串的大寫形式字符串,非英文字符返回原值 SELECT UPPER(N'test') --返回TEST SELECT UPPER(N'1024') --非英文字符返回原值1024

LOWER

--LOWER():返回指定英文字符串的小寫形式字符串,非英文字符返回原值 SELECT LOWER(N'TEST') --返回test SELECT LOWER(N'1024') --非英文字符返回原值1024

STUFF

--STUFF():替換字符串中指定長度的字符串,涉及四個參數 --參數1:指定要操作的字符串 --參數2:指定要替換字符串的起始位置 --參數3:指定要替換字符的長度 --參數4:指定要用于替換的字符串 SELECT STUFF(N'ABCD', 2, 2, N'EE') --起始位置為2,替換長度為2,用“EE”替換,返回AEED SELECT STUFF(N'ABCD', 2, 2, N'') --起始位置為2,替換長度為2,用空字符串替換,可看成刪除指定字符串,返回AD

CHARINDEX

--CHARINDEX():返回指定字符串在另一指定字符串中出現的起始位置,未出現則返回0 SELECT CHARINDEX(N'0', N'1024') --“0”在“1024”中出現的起始位置為2,返回2 SELECT CHARINDEX(N'5', N'1024') --“5”在“1024”中未出現,返回0 SELECT CHARINDEX(N'ES', N'TEST') --“ES”在“TEST”中出現的起始位置為2,返回2

SOUNDEX

--SOUNDEX():返回指定字符串的SOUNDEX值 --SOUNDEX為語音算法,根據英文字符的讀音計算近似值,由四個字符構成,第一個字符為英文字母,后三個字符為數字 --將英文字符按照以下規則進行替換,第一個英文字符不進行替換,對應值為0的英文字符忽略 --A E H I O U W Y -> 0 --B F P V -> 1 --C G J K Q S X Z -> 2 --D T -> 3 --L -> 4 --M N -> 5 --R -> 6 --注意:如果字符串中存在相同對應數字的2個或2個以上的字母在一起,則刪除其它的,只保留1個,去除對應值為0的字符,只返回前4個字節,不夠用0填充 SELECT SOUNDEX(N'TEST') --返回T200

DIFFERENCE

--DIFFERENCE():返回兩個字符串SOUNDEX值的差值,該差值反映了兩個字符串的相似程度 --返回值為0-4,0代表幾乎不同或完全不同,4代表幾乎相同或完全相同 SELECT DIFFERENCE(N'TEST', N'1024') --返回0 SELECT DIFFERENCE(N'TEST', N'TEST') --返回4 SELECT DIFFERENCE(N'SQL', N'TEST') --返回2

STR

--STR():返回指定數值的等效字符串 --第一個參數為指定要操作的數值 --第二個參數為指定要返回的字符串長度,默認值為10,不足時用空字符串補位 --第三個參數為要返回的小數位數,默認值為0,不足時用0補位 SELECT STR(1024) --返回 1024 SELECT LEN(STR(1024)) --返回10 SELECT STR(1024, 15) --返回 1024 SELECT LEN(STR(1024, 15)) --返回15 SELECT STR(1024, 20, 2) --返回 1024.00 SELECT LEN(STR(1024, 20, 2)) --返回20

PATINDEX

--PATINDEX():返回指定字符串中指定模式在另一指定字符串中第一次出現的起始位置,未找到則返回0 SELECT PATINDEX(N'TEST', N'TEST1024TEST') --返回0 SELECT PATINDEX(N'TEST', N'TEST') --返回1 SELECT PATINDEX(N'TEST%', N'1024TEST1024') --返回0 SELECT PATINDEX(N'%TEST%', N'1024TEST1024TEST1024') --返回5 SELECT PATINDEX(N'%[TEST]%', N'1024TEST1024TEST1024') --返回字符串TEST第一次出現的位置5 SELECT PATINDEX(N'%[^TEST]%', N'1024TEST1024TEST1024') --返回不等于字符T、E、S、T的其它字符第一次出現的位置1 SELECT PATINDEX(N'%[^TEST]%', N'T1024TEST1024TEST1024') --返回不等于字符T、E、S、T的其它字符第一次出現的位置2

未完待續…

總結

以上是生活随笔為你收集整理的SQL常用函数及使用案例的全部內容,希望文章能夠幫你解決所遇到的問題。

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