我需要检查MS SQL中的函数何时在insert to table和handle condition中返回空字符串('')。我不知道怎么回事。我使用这种语法:
INSERT
INTO [DB].[dbo].[TablesNames]
(Name)
VALUES
(CASE
WHEN [dbo].Function(@ID, @ExternalName, @Level) IS ''
THEN @Name
ELSE [dbo].Function(@ID, @ExternalName, @Level))
在这种情况下如何正确的语法? Thx for advance。
答案 0 :(得分:1)
我更倾向于将其写成:
INSERT INTO [DB].[dbo].[TablesNames](Name)
SELECT (CASE WHEN x = '' THEN @Name ELSE x END)
FROM (SELECT [dbo].Function(@ID, @ExternalName, @Level) as val) x;
函数通常在调用时会产生开销。这个公式为SQL Server提供了一次只评估函数的机会。
还有一些事情:
IS
。你的意思是IS NULL
?NULL
值吗?