我在 SQL Server 2008 之上使用 DotNetNuke。当以下代码返回 NULL 值时,我试图完全不返回任何内容。我不想要一个空行,我不想要“null”,我什么都不想要。这甚至可能吗?我尝试使用 COALESCE,但我要么遗漏了一些东西,要么它不是为此目的而设计的。
DECLARE @Category table (Category varchar(15), Deleted bit)
INSERT INTO @Category (Category, Deleted)
SELECT 'Benefits', 0
UNION ALL
SELECT 'UR', 0
UNION ALL
SELECT 'Events', 1
DECLARE @Staff Table (DNNUserID int, InternalStaff bit,
Deleted bit, InactiveStaff bit)
INSERT INTO @Staff (DNNUserID, InternalStaff, Deleted, InactiveStaff)
SELECT '556', 1, 0, 0
UNION ALL
SELECT '423', 0, 0, 0
UNION ALL
SELECT '111', 1, 0, 1
UNION ALL
SELECT '222', 1, 1, 0
SELECT Category FROM @Category WHERE Deleted = 0
UNION ALL
SELECT CASE WHEN '111' IN
(SELECT DnnUserID FROM @Staff WHERE Deleted = 0 AND
InactiveStaff = 0 AND InternalStaff = 1)
THEN 'Internal Use Only'
ELSE NULL END
变量表只是为了便于使用,这里有两个名称大致相同的真实表,我实际上必须使用它们。
我不能使用存储过程来执行这些操作,它必须是简单的选择语句或标量 UDF,以便我们使用的 Telerik 控件能够理解它。
我无法直接访问 DNN 的实际背景(因此我无法编辑任何 DNN 或 Telerik 的代码),只能访问服务器,并且只能通过主 DNN Web 界面将 select 语句添加到 Telerik 控件。
这个想法是,如果个人是我工作的公司的内部成员,我们会看到类别表中的主列表,以及下拉列表中的条目“仅限内部使用”。如果其他人使用它,例如,我们客户的一位员工,他们只会看到类别中的列表。
这可行吗?我目前正在尝试不使用某个功能,因为我无法在实时系统中对其进行测试(我今天在家工作,VPN 已关闭),但如果有必要,我可以并且会在我家进行测试使用上述 SQL 的数据库。
编辑
我可以在一个函数中大致使用它:
DECLARE @DNNUserID int = 111
DECLARE @Category table (Category varchar(15), Deleted bit)
INSERT INTO @Category (Category, Deleted)
SELECT 'Benefits', 0
UNION ALL
SELECT 'UR', 0
UNION ALL
SELECT 'Events', 1
DECLARE @Staff Table (DNNUserID int, InternalStaff bit, Deleted bit,
InactiveStaff bit)
INSERT INTO @Staff (DNNUserID, InternalStaff, Deleted, InactiveStaff)
SELECT '556', 1, 0, 0
UNION ALL
SELECT '423', 0, 0, 0
UNION ALL
SELECT '111', 1, 0, 1
UNION ALL
SELECT '222', 1, 1, 0
IF @DNNUserID NOT IN (SELECT DnnUserID FROM @Staff WHERE Deleted = 0
AND InactiveStaff = 0 AND InternalStaff = 1)
BEGIN
SELECT Category FROM @Category WHERE Deleted = 0
END
IF @DNNUserID IN (SELECT DnnUserID FROM @Staff WHERE Deleted = 0
AND InactiveStaff = 0 AND InternalStaff = 1)
BEGIN
SELECT Category FROM @Category WHERE Deleted = 0
UNION ALL
SELECT 'Internal Use Only'
END
但!我宁愿找到一种方法来做到这一点而不必诉诸函数这可能吗?