国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Microsoft SQL Server 2022 新特性之 T-SQL 語言增強(qiáng)

這篇具有很好參考價值的文章主要介紹了Microsoft SQL Server 2022 新特性之 T-SQL 語言增強(qiáng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Microsoft SQL Server 2022 已經(jīng)正式發(fā)布,可以下載使用。本文給大家介紹一下該版本中的部分 T-SQL 新功能。

窗口函數(shù)增強(qiáng)

新版本中的窗口函數(shù)支持命名窗口(WINDOW)子句,可以利用該子句定義窗口變量,然后在 OVER 子句中使用該窗口變量。

舉例說明(示例腳本):

SELECT d.dept_name AS "部門名稱", e.emp_name AS "姓名", e.salary AS "月薪",
       ROW_NUMBER() OVER w AS "row_number",
       RANK() OVER w AS "rank",
       DENSE_RANK() OVER w AS "dense_rank",
       PERCENT_RANK() OVER w AS "percent_rank"
FROM employee e
JOIN department d ON (e.dept_id = d.dept_id)
WINDOW w AS (PARTITION BY e.dept_id ORDER BY e.salary DESC);

部門名稱 |姓名 |月薪      |row_number|rank|dense_rank|percent_rank       |
-----+---+--------+----------+----+----------+-------------------+
行政管理部|劉備 |30000.00|         1|   1|         1|                0.0|
行政管理部|關(guān)羽 |26000.00|         2|   2|         2|                0.5|
行政管理部|張飛 |24000.00|         3|   3|         3|                1.0|
人力資源部|諸葛亮|24000.00|         1|   1|         1|                0.0|
人力資源部|黃忠 | 8000.00|         2|   2|         2|                0.5|
人力資源部|魏延 | 7500.00|         3|   3|         3|                1.0|
...

示例使用 WINDOW 子句定義了一個窗口變量 w,然后在 4 個窗口函數(shù)的 OVER 子句中使用了該變量。這種使用窗口變量的寫法可以簡化窗口選項的輸入。

新增的 WINDOW 子句還支持其他用法,具體可以查看官方文檔。

IS DISTINCT FROM

IS [NOT] DISTINCT FROM 的作用是判斷兩個表達(dá)式是否相同,它們支持 NULL 值的比較。例如:

CREATE TABLE test(id INT);
INSERT INTO test VALUES(100);

SELECT * 
FROM test 
WHERE 1 IS NOT DISTINCT FROM 1;
id |
---+
100|

SELECT * 
FROM test 
WHERE 1 IS NOT DISTINCT FROM 2;
id|
--+

SELECT * 
FROM test 
WHERE NULL IS NOT DISTINCT FROM NULL;
id |
---+
100|

SELECT * 
FROM test 
WHERE NULL = NULL;
id|
--+

注意,IS NOT DISTINCT FROM 的作用類似于 =,IS DISTINCT FROM 的作用類似于 !=,具體說明參考官方文檔。

時間序列函數(shù)

新增 DATE_BUCKET() 函數(shù),用于返回從指定時間點(diǎn)開始,以固定日期時間間隔為存儲桶的每個起始日期時間。例如:

DECLARE @date DATETIME2 = '2022-11-20 21:22:11';
DECLARE @orign DATETIME2 = '2022-11-01 00:00:00';

SELECT DATE_BUCKET(WEEK, 1, @date, @orign);
                       |
-----------------------+
2022-11-15 00:00:00.000|

SELECT DATE_BUCKET(WEEK, 2, @date, @orign);
                       |
-----------------------+
2022-11-15 00:00:00.000|

SELECT DATE_BUCKET(WEEK, 3, @date, @orign);
                       |
-----------------------+
2022-11-01 00:00:00.000|

從 2022-11-01 00:00:00 開始,以 1 或者 2 周為存儲桶計算,包含 2022-11-20 21:22:11 的存儲桶的起始日期為 2022-11-15 00:00:00。如果以 3 周為存儲桶計算,包含 2022-11-20 21:22:11 的存儲桶的起始日期為 2022-11-01 00:00:00。

新增 GENERATE_SERIES() 函數(shù),可以用于生成數(shù)字序列,例如:

SELECT value FROM GENERATE_SERIES(1, 5);
value
-----------
1
2
3
4
5

SELECT value FROM GENERATE_SERIES(10, 1, -2);
value
-----------
10
8
6
4
2

另外,以下窗口函數(shù)支持 IGNORE NULLS 和 RESPECT NULLS 選項,分別表示計算時忽略或者考慮 NULL 值:

  • FIRST_VALUE()
  • LAST_VALUE()

JSON 函數(shù)增強(qiáng)

新版本中的 ISJSON() 函數(shù)增加了一個可選參數(shù):

ISJSON ( expression [, json_type_constraint] )

參數(shù) json_type_constraint 用于指定要測試的 JSON 類型,包括 VALUE、ARRAY、OBJECT 或 SCALAR。例如:

SELECT ISJSON('true', VALUE);

SELECT ISJSON('test string', VALUE);

新增 JSON_PATH_EXISTS() 函數(shù),可以用于檢查 JSON 字符串中是否存在指定的 SQL/JSON 路徑。例如:

DECLARE @jsonInfo NVARCHAR(MAX)

SET @jsonInfo=N'{"info":{"address":[{"town":"Paris"},{"town":"London"}]}}';

SELECT JSON_PATH_EXISTS(@jsonInfo,'$.info.address'); -- 1

新增 JSON_OBJECT() 函數(shù),用于構(gòu)造 JSON 對象。例如:

SELECT JSON_OBJECT('name':'value', 'type':1);

{"name":"value","type":1}

新增 JSON_ARRAY() 函數(shù),用于構(gòu)造 JSON 數(shù)組。例如:

SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1));

["a",{"name":"value","type":1}]

聚合函數(shù)增強(qiáng)

新增 APPROX_PERCENTILE_CONT() 以及 APPROX_PERCENTILE_DISC() 函數(shù),可以返回一組數(shù)據(jù)中的近似百分位數(shù)。

對于大型數(shù)據(jù)集,它們可以用作 PERCENTILE_CONT 以及 PERCENTILE_DISC 的替代方法,與響應(yīng)時間較慢的準(zhǔn)確百分位值相比,可以接受可忽略的錯誤和較快的響應(yīng)。

T-SQL 函數(shù)增強(qiáng)

新增 GREATEST() 以及 LEAST(),分別用于返回一個或多個參數(shù)中的最大值以及最小值。例如:

SELECT GREATEST?(?'6.62', 3.1415, N'7'?)?AS?GreatestVal,
       LEAST?(?'6.62', 3.1415, N'7'?)?AS?LeastVal;

GreatestVal|LeastVal|
-----------+--------+
     7.0000|  3.1415|

STRING_SPLIT() 函數(shù)支持一個額外的可選參數(shù),可以為拆分后的每個字符串返回一個序號。例如:

SELECT * FROM STRING_SPLIT('SQL Server 2022', ' ', 1);

value |ordinal|
------+-------+
SQL   |      1|
Server|      2|
2022  |      3|

新增 DATETRUNC() 函數(shù),可以對日期時間數(shù)據(jù)進(jìn)行截斷。例如:

DECLARE @d datetime2 = '2021-12-08 11:30:15.1234567';
SELECT 'Year', DATETRUNC(year, @d);
SELECT 'Quarter', DATETRUNC(quarter, @d);
SELECT 'Month', DATETRUNC(month, @d);
SELECT 'Week', DATETRUNC(week, @d); -- Using the default DATEFIRST setting value of 7 (U.S. English)
SELECT 'Iso_week', DATETRUNC(iso_week, @d);
SELECT 'DayOfYear', DATETRUNC(dayofyear, @d);
SELECT 'Day', DATETRUNC(day, @d);
SELECT 'Hour', DATETRUNC(hour, @d);
SELECT 'Minute', DATETRUNC(minute, @d);
SELECT 'Second', DATETRUNC(second, @d);
SELECT 'Millisecond', DATETRUNC(millisecond, @d);
SELECT 'Microsecond', DATETRUNC(microsecond, @d);

Year        2021-01-01 00:00:00.0000000
Quarter     2021-10-01 00:00:00.0000000
Month       2021-12-01 00:00:00.0000000
Week        2021-12-05 00:00:00.0000000
Iso_week    2021-12-06 00:00:00.0000000
DayOfYear   2021-12-08 00:00:00.0000000
Day         2021-12-08 00:00:00.0000000
Hour        2021-12-08 11:00:00.0000000
Minute      2021-12-08 11:30:00.0000000
Second      2021-12-08 11:30:15.0000000
Millisecond 2021-12-08 11:30:15.1230000
Microsecond 2021-12-08 11:30:15.1234560

LTRIM() 以及 RTRIM() 函數(shù)支持一個額外的可選參選,可以指定要刪除的字符。例如:

SELECT LTRIM('123abc.' , '123.'), RTRIM('.123abc.' , 'abc.');

    |    |
----+----+
abc.|.123|

TRIM() 函數(shù)可以選擇從字符串的開頭和/或末尾刪除空格字符或其他指定字符。例如:

SELECT TRIM(LEADING '-' FROM  '---SQL Server 2022---') AS lead,
       TRIM(TRAILING '-' FROM  '---SQL Server 2022---') AS trail,
       TRIM(BOTH '-' FROM  '---SQL Server 2022---') AS both;

lead              |trail             |both           |
------------------+------------------+---------------+
SQL Server 2022---|---SQL Server 2022|SQL Server 2022|

位操作函數(shù)

新增,LEFT_SHIFT() 函數(shù)以及 << 運(yùn)算符,用于實(shí)現(xiàn)按位左移運(yùn)算。例如:

SELECT LEFT_SHIFT(1, 5), 1<<5;

  |  |
--+--+
32|32|

新增 RIGHT_SHIFT() 函數(shù)以及 >> 運(yùn)算符,用于實(shí)現(xiàn)按位右移運(yùn)算。例如:

SELECT RIGHT_SHIFT(32, 2), 32>>2;

 | |
-+-+
8|8|

新增 BIT_COUNT() 函數(shù),用于返回整數(shù)或者二進(jìn)制數(shù)中設(shè)置為 1 的位數(shù)。例如:

SELECT BIT_COUNT(10) as Count1, BIT_COUNT(0x0a) as Count2;

Count1|Count2|
------+------+
     2|     2|

整數(shù) 10 和十六進(jìn)制 0x0a 的二進(jìn)制表達(dá)式都為 1010,只有 2 位設(shè)置為 1。

新增 GET_BIT() 函數(shù),用于返回整數(shù)或者二進(jìn)制數(shù)中指定偏移量對應(yīng)的位,偏移量從 0 開始。例如:

SELECT GET_BIT(10, 1) as Get_1st_Bit, GET_BIT(10, 2) as Get_2nd_Bit;

Get_1st_Bit|Get_2nd_Bit|
-----------+-----------+
          1|          0|

整數(shù) 10 的二進(jìn)制表達(dá)式為 1010,偏移量為 1 的位為 1,偏移量為 2 的位為 0。

新增 SET_BIT() 函數(shù),用于設(shè)置并返回整數(shù)或者二進(jìn)制數(shù)中指定偏移量對應(yīng)的位,偏移量從 0 開始。例如:

SELECT SET_BIT(10, 0) as Result1,  SET_BIT(10, 1, 0) as Result2;

Result1|Result2|
-------+-------+
     11|      8|

整數(shù) 10 的二進(jìn)制表達(dá)式為 1010,將偏移量為 0 的位設(shè)置為 1,返回結(jié)果為二進(jìn)制的 1011,也就是十進(jìn)制的 11。將偏移量為 1 的位設(shè)置為 0,返回結(jié)果為二進(jìn)制的 1000,也就是十進(jìn)制的 8。文章來源地址http://www.zghlxwxcb.cn/news/detail-441672.html

到了這里,關(guān)于Microsoft SQL Server 2022 新特性之 T-SQL 語言增強(qiáng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【SQL Server】數(shù)據(jù)庫開發(fā)指南(三)面向數(shù)據(jù)分析的 T-SQL 編程技巧與實(shí)踐

    本系列博文還在更新中,收錄在專欄:#MS-SQL Server 專欄中。 本系列文章列表如下: 【SQL Server】 Linux 運(yùn)維下對 SQL Server 進(jìn)行安裝、升級、回滾、卸載操作 【SQL Server】數(shù)據(jù)庫開發(fā)指南(一)數(shù)據(jù)庫設(shè)計的核心概念和基本步驟 【SQL Server】數(shù)據(jù)庫開發(fā)指南(二)MSSQL數(shù)據(jù)庫開發(fā)對

    2023年04月12日
    瀏覽(223)
  • 【數(shù)據(jù)庫·關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL·學(xué)習(xí)筆記】Microsoft SQL Server數(shù)據(jù)庫的建立和刪除

    【數(shù)據(jù)庫·關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL·學(xué)習(xí)筆記】Microsoft SQL Server數(shù)據(jù)庫的建立和刪除

    開發(fā)環(huán)境:SQL Server Management Studio(SSMS) 利用數(shù)據(jù)庫對象資源管理器創(chuàng)建數(shù)據(jù)庫 (1)右擊對象資源管理器中的數(shù)據(jù)庫,選擇新建數(shù)據(jù)庫 (2)在新建數(shù)據(jù)庫界面輸入數(shù)據(jù)庫名稱 ,并選擇確定 利用CREAT DATABASE命令在SSM工具的新建查詢中創(chuàng)建數(shù)據(jù)庫 1.語法格式 CREATE DATABASE dat

    2024年02月08日
    瀏覽(34)
  • Microsoft SQL Server 2008 R2(Microsoft SQL Server,錯誤: 2)

    Microsoft SQL Server 2008 R2(Microsoft SQL Server,錯誤: 2)

    打開SQL Server 2008 R2,連接數(shù)據(jù)庫引擎,出現(xiàn)以下錯誤: 在與 SQL Server 建立連接時出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯誤。未找到或無法訪問服務(wù)器。請驗(yàn)證實(shí)例名稱是否正確并且 SQL Server 已配置為允許遠(yuǎn)程連接。 (provider: 命名管道提供程序, error: 40 - 無法打開到 SQL Server 的連

    2024年02月11日
    瀏覽(93)
  • 附加Microsoft SQL Server數(shù)據(jù)庫時報錯,Microsoft SQL Server,錯誤: 5120

    附加Microsoft SQL Server數(shù)據(jù)庫時報錯,Microsoft SQL Server,錯誤: 5120

    附加Microsoft SQL Server數(shù)據(jù)庫時報錯, 錯誤信息: 無法打開物理文件“xxx.mdf”。操作系統(tǒng)錯誤 5:“5(拒絕訪問。)”。 (Microsoft SQL Server,錯誤: 5120) 有關(guān)幫助信息,請單擊: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20ServerProdVer=11.00.2100EvtSrc=MSSQLServerEvtID=5120LinkId=20476 解決方法:

    2024年02月16日
    瀏覽(99)
  • VSCode插件 SQL Server 連接 Microsoft Server SQL

    VSCode插件 SQL Server 連接 Microsoft Server SQL

    之前一直用SQL Server Management Studio連接數(shù)據(jù)庫,感SQL Server Management Studio連接驟要簡單一些,有時候就需要從IDE切換到數(shù)據(jù)庫比較麻煩還比較消耗機(jī)器資源,so想嘗試vs code連接數(shù)據(jù)庫,就順便把我的步驟記錄下來。 先在vs code用快捷鍵(Ctrl + Shift + X)打開擴(kuò)展頁面,輸入sql ser

    2024年02月05日
    瀏覽(25)
  • [Microsoft] [SQL Server的ODBC驅(qū)動程序11] SQL Server網(wǎng)絡(luò)接口:連接字符串無效[87] [Microsoft] [SQL Server的ODBC驅(qū)動程序

    [Microsoft] [SQL Server的ODBC驅(qū)動程序11] SQL Server網(wǎng)絡(luò)接口:連接字符串無效[87] [Microsoft] [SQL Server的ODBC驅(qū)動程序

    解決?[Microsoft] [SQL Server的ODBC驅(qū)動程序11] SQL Server網(wǎng)絡(luò)接口:連接字符串無效[87] ? ? [Microsoft] [SQL Server的ODBC驅(qū)動程序11]登錄超時已過期 ? ? [Microsoft] [SQL Server的ODBC驅(qū)動程序11]建立與SQL Server的連接時發(fā)生了與網(wǎng)絡(luò)相關(guān)或特定于實(shí)例的錯誤。請檢查實(shí)例名稱是否正確以及SQL SER

    2024年02月10日
    瀏覽(27)
  • Microsoft SQL Server 介紹

    SQL Server 是 Microsoft 開發(fā)的一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),現(xiàn)在是世界上最為常用的數(shù)據(jù)庫; SQL Server 是一個高度可擴(kuò)展的產(chǎn)品,可以從一個單一的筆記本電腦上運(yùn)行的任何東西或以高倍云服務(wù)器網(wǎng)絡(luò),或在兩者之間任何東西。雖然說是“任何東西”,但是仍然要滿足相關(guān)的

    2024年02月03日
    瀏覽(18)
  • Microsoft SQL Server 2005安裝

    Microsoft SQL Server 2005安裝

    SQL Server 2005中文版是一款由Microsoft 公司推出的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)軟件。SQL Server 2005中文版具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越多種平臺從運(yùn)行Microsoft Windows 98 的膝上型電腦到Windows 2012 的大型多處理器的服務(wù)器。能夠在多個平臺、應(yīng)用程序和設(shè)

    2024年02月04日
    瀏覽(24)
  • 審核 Microsoft SQL Server 日志

    審核 Microsoft SQL Server 日志

    手動審核數(shù)據(jù)庫活動是一項艱巨的任務(wù),有效完成審計的最佳方法是使用簡化和自動化數(shù)據(jù)庫監(jiān)控的綜合解決方案,該解決方案還應(yīng)使數(shù)據(jù)庫管理員能夠監(jiān)控、跟蹤和即時識別任何操作問題的根本原因,并實(shí)時檢測對機(jī)密數(shù)據(jù)的未經(jīng)授權(quán)的訪問。 SQL Server 日志是 Microsoft SQL

    2024年02月07日
    瀏覽(22)
  • SQL Server 2022 安裝失敗

    SQL Server 2022 安裝失敗

    本人建議是將SOL Server 2022 刪干凈,更換成 SQL Server 2019. 刪除 SOL Server 2022 步驟? 1. 關(guān)閉 SQL Server 服務(wù) 2. 在 控制面版?中 刪除 SQL Server 組件 。 3. 在C盤的Program Files和Program Files(×86)中分別刪除Microsoft SQL Server 文件。 4. 一開始下載SQL Server 2022 的安裝程序,本人建議一起刪除。

    2024年02月13日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包