我在 SQL 中有一个函数,它根据输入参数对多个表中的一个执行检查。例如
CREATE FUNCTION demo
(
@Classification INT,
@ClassificationValue INT
)
RETURNS INT
AS
BEGIN
IF @Classification = 1
BEGIN
IF EXISTS (SELECT CountryRegionId FROM table_1 WHERE id = @ClassificationValue)
BEGIN
RETURN 1;
END
END
IF @Classification = 2
BEGIN
IF EXISTS (SELECT CountryRegionId FROM table_2 WHERE id = @ClassificationValue)
BEGIN
RETURN 1;
END
END
RETURN 0;
END
这是一种简化的情况,实际上有更多的目标表可供选择。
我的问题
在 C# 或大多数其他语言中,最好使用 switch 语句而不是连续的 if 语句,因为会使用散列。这在 SQL 中是否相同(假设 case 语句可以包含逻辑表达式 - 例如 Case When a <5 - 显然不能被散列。