当函数返回空字符串时,MS SQL中的IF语句

时间:2016-09-22 10:52:08

标签: sql-server

我需要检查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。

1 个答案:

答案 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值吗?
相关问题