使用CONVERT在动态SQL中处理COALESCE

时间:2019-02-22 17:11:53

标签: sql tsql stored-procedures dynamic-sql

存在一个存储过程,该存储过程连接表以检索所需的结果。它需要通过@cha_id对其进行过滤,并且在用户未提供的地方,它将相应地获取tablea中的内容。我们如何在动态SQL查询中处理COALESCE?我无法获得它,因为CONVERT也应该接受@cha_id。例如,如果不需要COALESCE或ISNULL,则可以使用

WHERE tablea.chan_id = '''+CONVERT(VARCHAR,@chan_id)+''' 

会工作。但是在我需要COALESCE / ISNULL的情况下,我无法弄清楚。

WHERE tablea.chan_id = COALESCE(CONVERT(VARCHAR,@chan_id),tablea.chan_id)

我一直在徒劳地研究。任何帮助都感激不尽。

1 个答案:

答案 0 :(得分:1)

尝试如下

  'SELECT * FROM tablea WHERE tablea.changelogtype_id= COALESCE(' + @cha_id + ', tablea.chan_id)'