SQL函数中的空返回

时间:2018-02-08 16:33:08

标签: sql-server sql-server-2012

我有以下SQL函数在变量中放入一个NULL值,因为表中没有相应的记录,它正在获取csv.string_val。

create function dbo.MyFunctionName (@ticket_id int)
  returns nvarchar(max)
  as
  BEGIN

  declare @assignees nvarchar(max)
  set @assignees = ''
  select @assignees = @assignees + '; ' +  csv.string_val
  from database.incident_table cr join assignment_table asg
on asg.item_id = cr.id
join user_table au on asg.app_user_id = au.app_user_id
join user_link_table aupl on aupl.app_user_id = au.app_user_id
join system_value_table csv on csv.owner_id = aupl.user_prof_id
left join system_config_table cs on cs.cfg_setting_id = csv.cfg_setting_id
where asg.item_defn_id = 648
and cs.cfg_setting_const = 'username'
and csv.cfg_setting_owner_type_name = 'USER_PROFILE'
and asg.item_id = @ticket_id

if len(@assignees) >= 3 set @assignees = right(@assignees, len(@assignees) - 2)

return @assignees
END

问题是当assignment_table中没有票号的记录时,@ seignees变量为null,我得到“传递给RIGHT函数的参数无效。”

我显然有脑痉挛,因为如果@assignees参数为null,我无法弄清楚如何让它不执行RIGHT()函数。我确定答案很简单,但此刻它正在逃避我。

编辑:使用STUFF和FOR XML为我修复它。

0 个答案:

没有答案