sql - SQL(SQLServer)中函数前的连字符有什么用
问题描述
我想了解在调用括号中的 SQL 函数之前包含连字符时 SQL 语法背后的逻辑是什么。
这是SQL:
IF (@StartDate > @EndDate)
BEGIN
SET @EndDate = @StartDate
SET @StartDate = @EndDate
END
DECLARE @nonworkingweekdays int
--now deal with public holidays
SELECT @nonworkingweekdays = count("Date") from
(
select distinct
(
CASE datepart(weekday,date)
WHEN 1 THEN null --ignore sundays
WHEN 7 THEN null --ignore saturdays
else "Date"
END
) AS "date"
from publicholidays
) nonworkingweekdays
WHERE
"Date" is not null and
"Date" between @StartDate and DATEADD(day, -1, @EndDate)
RETURN
CASE WHEN @StartDate <= @EndDate
THEN
dbo.FullWeekDays(@StartDate, @EndDate) - @nonworkingweekdays
ELSE
-(dbo.FullWeekDays(@StartDate, @EndDate) - @nonworkingweekdays)
END
我感到困惑的逻辑是在else语句中,该脚本底部有return语句。
提前致谢 :)
解决方案
这是 TSQL一元负运算符:
返回数值表达式(一元运算符)的负数。一元运算符仅对数字数据类型类别的任何一种数据类型的一个表达式执行操作。
推荐阅读
- docker - Dockerfile 中的条件复制
- javascript - 在 Facebook 的 Chrome 扩展中禁用页面可见性 API
- javascript - Ajax 不在标签中显示数据
- python-3.x - 在 Nvidia Jetson Nano 中播放视频的 Python 代码
- android - 如何使回调流主要安全?
- ios - UITableViewCell 中的 UICollectionView。捕捉滚动事件
- flutter - 空安全包抛出错误:“无法以健全的空安全运行”
- css - bootstrap 5,带指示器的标签
- javascript - Typescript / Angular 12:访问嵌套布尔/枚举权限的结构
- c++ - 如何使用 Visual Studio Code 从 Visual Studio 2019 构建、调试和运行现有的 C++ 解决方案 (.sln)?