sql - 如何在标量函数中使用 SELECT CASE?
问题描述
这是一个非常基本的标量函数,1
如果提供的 2 个数字的总和等于10
或0
不等于,它应该返回。
CREATE FUNCTION IsSumEqualToTen
(
@number1 INT,
@number2 INT
)
RETURNS BIT
AS
RETURN
(
SELECT CASE WHEN (@number1 + @number2) = 10
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT)
END
)
但是,我得到一个语法错误!
'RETURN' 附近的语法不正确。
这里有什么不正确的?
解决方案
你需要一个开始/结束
CREATE FUNCTION IsSumEqualToTen
(
@number1 INT,
@number2 INT
)
RETURNS BIT
AS
BEGIN
RETURN
(
SELECT CASE WHEN (@number1 + @number2) IN (10,0)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT)
END
)
END
GO
另请注意,您不需要转换为 BIT,因为该函数会返回一点。最后,标量函数像泥土一样缓慢。您可以改用内联函数,这需要一些额外的努力才能应用,但速度会快几倍。
CREATE FUNCTION dbo.IsSumEqualToTen
(
@number1 INT,
@number2 INT
)
RETURNS TABLE AS RETURN
SELECT is10 = CASE WHEN (@number1 + @number2) =IN (10,0) THEN CAST(1 AS BIT) ELSE 0 END;
GO
推荐阅读
- python - 在python 3中读取香港补充字符集
- python-3.x - 在连接之前或之后使用 StandardScaler 缩放多个功能?
- node.js - 如何将 USE INDEX (indexname) 添加到 ObjectionJS 查询
- excel - 如何在 Excel 2010 的 VBA 编辑器中输入中文文本?
- spring - 从 ftp 读取文件时的 Spring 集成问题
- ios - 跨多种语言的句子边界检测
- google-cloud-platform - 如何为谷歌数据工作室更新谷歌云存储/大查询中的数据?
- sql - LEFT OUTER JOIN 上的 SQL 重复值问题
- javascript - 如何将小型 jQuery 扩展(函数)转换为模块化 javascript?
- spring - 在 Spring Data 查询方法声明中找不到嵌套属性