title: Sql Server deterministic user-defined function
body: <p>I have the following user-defined function:</p>
  
  <pre><code>create function [dbo].[FullNameLastFirst]
  (
      @IsPerson bit,
      @LastName nvarchar(100),
      @FirstName nvarchar(100)
  )
  returns nvarchar(201)
  as
  begin
      declare @Result nvarchar(201)
      set @Result = (case when @IsPerson = 0 then @LastName else case when @FirstName = '' then @LastName else (@LastName + ' ' + @FirstName) end end)
      return @Result
  end
  </code></pre>
  
  <p>I can't create an Index on a computed column using this function cause it's not deterministic.
  Someone could explain why is it not deterministic and eventually how to modify to make it deterministic?
  Thanks</p>