分享方式:


一元運算符 - 負數 (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲

傳回數值運算式 (一元運算子) 的負值。 一元運算子只能在屬於數值資料類型類別目錄之任何資料類型的單一運算式上執行運算。

運算子 意義
+ (一元正數) 數值是正的。
- (一元負數) 數值是負的。
~ (位元 NOT) 傳回數位的補碼。

+ 在數值數據類型類別目錄的任何一個數據類型的任何表達式上,都可以使用 (positive) 和 - (negative) 運算符。 ~ (位NOT) 運算子只能用於整數數據類型類別目錄之任一數據類型的運算式上。

Transact-SQL 語法慣例

語法

- numeric_expression

引數

numeric_expression

數值數據類型類別目錄的任何一個數據類型的任何有效 表達式 ,但日期和時間類別除外。

傳回類型

除了不帶正負號的 tinyint 運算式升級為帶正負號 smallint 結果,傳回 numeric_expression 的資料類型。

範例

A. 將變數設定為負值

下列範例會將變數設為負值。

USE tempdb;
GO

DECLARE @MyNumber DECIMAL(10, 2);
SET @MyNumber = -123.45;

SELECT @MyNumber AS NegativeValue;
GO

結果集如下所示。

NegativeValue
--------------
-123.45

B. 將變數變更為負值

下列範例會將變數改成負值。

USE tempdb;
GO

DECLARE @Num1 INT;
SET @Num1 = 5;

SELECT @Num1 AS VariableValue,
    -@Num1 AS NegativeValue;
GO

結果集如下所示。

VariableValue NegativeValue
------------- -------------
5             -5

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

本文 Transact-SQL 程式碼範例使用 AdventureWorks2022AdventureWorksDW2022 範例資料庫,從 Microsoft SQL Server Samples 和 Community Projects (Microsoft SQL Server 範例和社群專案)首頁即可下載。

C. 傳回正常數的負值

下列範例會傳回正常數的負值。

USE ssawPDW;
GO

SELECT TOP (1) - 17 FROM DimEmployee;

結果集如下所示。

-17

請注意傳回的結果,就像將一元負數套用至具有一 元一元運算符的值 - 正 數套用一樣。

USE ssawPDW;
GO

SELECT TOP (1) - (+ 17)
FROM DimEmployee;

結果集如下所示。

-17

D. 傳回負常數的正數

下列範例會傳回負常數的正值。

USE ssawPDW;
GO

SELECT TOP (1) - (- 17)
FROM DimEmployee;

結果集如下所示。

-17

E. 傳回數據行的負值

一元負值會反轉數據行值的數值運算符。 因此,負值會從正值傳回,而正值會從負值傳回。

下列範例會傳回 DimEmployee 資料表中每一位員工 BaseRate 值的負值。

USE ssawPDW;
GO

SELECT - BaseRate
FROM DimEmployee;