国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SQL SERVER中SELECT和SET賦值相同點與不同點(推薦)

SQL SERVER中SELECT和SET賦值相同點與不同點(推薦)

2020-06-02 14:30markkang Sql Server

SELECT和SET在SQL SERVER中都可以用來對變量進行賦值,但其用法和效果在一些細節上有些不同。今天小編給大家分享SQL SERVER中SELECT和SET賦值相同點與不同點,感興趣的朋友一起看看吧

SELECT和SET在SQL SERVER中都可以用來對變量進行賦值,但其用法和效果在一些細節上有些不同。

1. 在對變量賦值方面,SET是ANSI標準的賦值方式,SELECT則不是。這也是SET方式被推薦使用的原因之一。

2. SELECT可以一次對多個變量進行賦值,而SET一次只能對一個變量賦值。

?
1
2
3
4
5
6
7
8
9
10
DECLARE @NAME NVARCHAR(128), @AGE INT;
SET @NAME = N'小明';
SET @AGE=18;
PRINT @NAME;
PRINT @AGE;
GO
DECLARE @NAME NVARCHAR(128), @AGE INT;
SELECT @NAME = N'小明',@AGE=18;
PRINT @NAME;
PRINT @AGE;

3.當使用子查詢給變量賦值時,則要求子查詢必須是標量子查詢(即子查詢得到結果是一個數據或者一行一列),不能返回多個值,否則會報錯。

1)但要注意的是,如果在SELECT查詢語句中給變量賦值的時候,查詢語句返回記錄的多少都不會產生錯誤,變量所得的值是查詢語句最后一行的記錄的相應值。

2)如果查詢結果沒有返回記錄,也就是說返回為NULL值時,將整個子查詢進行賦值的方式,SET和SELECT都會設置為NULL,而在SELECT查詢語句中賦值,變量會保持為初始值不受影響。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
IF (OBJECT_ID('tempdb..#temp') is not null)
BEGIN
  DROP TABLE #temp;
END
ELSE
BEGIN
  CREATE TABLE #temp(
  [Name] NVARCHAR(128) ,
  AGE INT
  )
END
GO
INSERT INTO #temp([Name],AGE) VALUES(N'小明',18)
INSERT INTO #temp([Name],AGE) VALUES(N'小張',19)
INSERT INTO #temp([Name],AGE) VALUES(N'小王',17)
GO
DECLARE @NAME1 NVARCHAR(128), @AGE1 INT,@NAME2 NVARCHAR(128), @AGE2 INT;
SET @NAME1=(SELECT TOP 1 [NAME] FROM #temp);  --SET標量在查詢賦值
SELECT @AGE1=(SELECT TOP 1 AGE FROM #temp);    --SELECT標量在查詢賦值
SELECT @NAME2=[NAME],@AGE2=[AGE] FROM #temp--SELECT查詢語句中賦值
PRINT @NAME1; --正確運行,顯示結果:小明
PRINT @AGE1; --正確運行,顯示結果:18
PRINT @NAME2; --正確運行,顯示結果:小王
PRINT @AGE2; --正確運行,顯示結果:17
 
GO
 
DECLARE @NAME1 NVARCHAR(128), @AGE1 INT,@NAME2 NVARCHAR(128), @AGE2 INT;
SELECT @NAME1=N'初始名字',@AGE1=0,@NAME2=N'初始名字',@AGE2=0; --初始化各變量值
SET @NAME1=(SELECT TOP 1 [NAME] FROM #temp WHERE 1>1);  --SET標量在查詢賦值
SELECT @AGE1=(SELECT TOP 1 AGE FROM #temp WHERE 1>1);    --SELECT標量在查詢賦值
SELECT @NAME2=[NAME],@AGE2=[AGE] FROM #temp WHERE 1>1;  --SELECT查詢語句中賦值
PRINT @NAME1; --正確運行,實際值:NULL, 顯示結果:(空白)
PRINT @AGE1; --正確運行,實際值:NULL, 顯示結果:(空白)
PRINT @NAME2; --正確運行,實際和顯示值:初始名字
PRINT @AGE2; --正確運行,實際和顯示值:0
GO

 那么我們該如何選擇使用哪種方式:

1. 因SET作為ANSI的標準,因此其是推薦用法。

2. 在不考慮標準的情況下,如果涉及到對多個變量賦值,為了少寫代碼或者獲取多個全局變量的值時,請考慮使用SELECT,一是因為簡便,二是一些全局變量會在在第二句執行時值發生變化。

總結

以上所述是小編給大家介紹的SQL SERVER中SELECT和SET賦值相同點與不同點,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

原文鏈接:https://www.cnblogs.com/markkang/archive/2019/12/01/11965732.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲男人一区 | 欧美日韩精品免费 | 人人爽人人爽人人片av | 国产人成精品一区二区三 | 欧美性猛交xxxx黑人猛交 | 日本大人吃奶视频xxxx | 欧美一级免费 | 大桥未久亚洲精品久久久强制中出 | 超碰在线91 | 亚洲 欧美 日韩在线 | 亚洲成人一区在线 | 26uuu成人免费毛片 | 91视频黄色| 久久2 | 伊人精品视频在线观看 | 国产精品久久久久久久久久久久久 | 欧美在线综合 | 国产一级在线免费观看 | 久久免费精品视频 | 中文字幕在线导航 | 欧美日韩三级 | 亚洲精品久久久久久国产 | 97热在线观看 | 日本精品久久 | 91精品久久久久久久久久久久久久久 | 国产综合久久久 | 黄色一级片免费观看 | 欧美成人二区 | 在线色站 | 久久综合九色 | 久久久久久久久久久久久国产 | 午夜桃色| 亚洲精品电影在线一区 | www欧美| 欧美精品一区二区三区在线播放 | 一区视频在线 | 亚州精品天堂中文字幕 | 亚洲久草 | 高清一区二区三区 | 久久久成人精品 | 91操操|