SQL常用函数及使用案例
生活随笔
收集整理的這篇文章主要介紹了
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)
- 分組排序前:
- 分組排序后:
CONCAT連接函數
--直接連接 SELECT CONCAT(N'A', N'B') --返回AB --以_為分隔符連接 SELECT CONCAT_WS(N'_',N'A', N'B') --返回A_BMERGE
- MERGE能將INSERT、UPDATE、DELETE簡單地合并為一句。根據源表與目標表連接的結果,對目標表執行插入、更新、刪除操作。MERGE函數的使用場景有:數據同步、數據轉換、基于源表對目標表做INSERT、UPDATE、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) --返回STLEFT
--LEFT():返回指定字符串左側指定長度的字符串 SELECT LEFT(N'TEST', 2) --返回TESUBSTRING
--SUBSTRING():返回指定字符串中指定截取起始位置和指定長度的字符串 SELECT SUBSTRING(N'TEST', 2, 2) --返回ESISNULL
--ISNULL():判斷第一個參數是否為空(NULL),如是,則返回第二個參數,如否,則返回第一個參數 SELECT ISNULL(N'', 'A') --返回空字符串 SELECT ISNULL(NULL, 'A') --返回A SELECT ISNULL(N'A', 'B') --返回A SELECT ISNULL(NULL, NULL) --返回NULLCOALESCE
--COALESCE():返回所有參數里第一個為非空(NOT NULL)的參數,參數個數至少兩個,至多N個 SELECT c(N'A', N'') --返回A SELECT COALESCE(NULL, N'') --返回空字符串 SELECT COALESCE(NULL, NULL, N'A', N'B') --返回AGETDATE
--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年非閏年,返回0DATENAME
--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') --返回11PARSENAME
--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) --返回ABABABREVERSE
--REVERSE():返回指定字符串的逆序字符串 SELECT REVERSE(N'123') --返回321 SELECT REVERSE(N'ABC') --返回CBASPACE
--SPACE():指定空格的個數 SELECT N'1'+SPACE(5)+N'2' --返回1 2 SELECT LEN(N'A'+SPACE(5)+N'B') --返回7ASCII
--ASCII():返回指定字符串或字符串中第一個字符的ASCII碼 SELECT ASCII(N'A') --返回A的ASCII碼65 SELECT ASCII(N'AB') --返回字符串中第一個字符的ASCII碼65UNICODE
--ASCII()用于操作單字節,雙字節采用UNICODE() --UNICODE():根據UNICODE標準返回指定字符或字符串中第一個字符的INT整數值 SELECT UNICODE(N'A') --返回字符對應的整數值65 SELECT UNICODE(N'ABC') --返回字符串中第一個字符對應的整數值65CHAR
--CHAR():返回指定ASCII碼對應的字符,范圍為0-255,越界返回NULL SELECT CHAR(65) --返回ASCII碼值為65所對應的字符A SELECT CHAR(256) --越界返回NULLNCHAR
--NCHAR():根據UNICODE標準返回指定INT整數值代碼的UNICODE字符 SELECT NCHAR(N'65') --返回字符AREPLACE
--REPLACE():用第三個字符串替換出現在第一個字符串中所有的第二個字符串 SELECT REPLACE(N'ABCB', N'B', N'D') --返回ADCD SELECT REPLACE(N'ABBC', N'B', N'') --用空字符串替換指定字符串,返回ACRTRIM
--RTRIM():返回字符串去除尾隨空格之后的字符串 SELECT RTRIM(N'ABC ') --返回ABC SELECT LEN(RTRIM(N'ABC ')) --返回3LTRIM
--LTRIM:返回字符串去除前導空格之后的字符串 SELECT LTRIM(N' ABC') --返回ABC SELECT LEN(N' ABC') --返回8 SELECT LEN(LTRIM(N' ABC')) --返回3UPPER
--UPPER():返回指定英文字符串的大寫形式字符串,非英文字符返回原值 SELECT UPPER(N'test') --返回TEST SELECT UPPER(N'1024') --非英文字符返回原值1024LOWER
--LOWER():返回指定英文字符串的小寫形式字符串,非英文字符返回原值 SELECT LOWER(N'TEST') --返回test SELECT LOWER(N'1024') --非英文字符返回原值1024STUFF
--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,用空字符串替換,可看成刪除指定字符串,返回ADCHARINDEX
--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,返回2SOUNDEX
--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') --返回T200DIFFERENCE
--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') --返回2STR
--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)) --返回20PATINDEX
--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常用函数及使用案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis-plus执行自定义SQL
- 下一篇: php前端语言三套语文卷子,2018高考