一元运算符 - 负数 (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库

返回数值表达式的值的负值(一元运算符)。 一元运算符只对一个表达式执行操作,该表达式可以是 numeric 数据类型类别中的任何一种数据类型。

运算符 含义
+ (一元正) 数值为正。
- (一元负) 数值为负。
~(位非) 返回数字的补数。

+ (正)和-(负)运算符可用于数值数据类型类别的任何数据类型的任何表达式。 ~ 运算符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 示例和社区项目主页下载它。

°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;