【问题标题】:Handling COALESCE in dynamic SQL with CONVERT使用 CONVERT 在动态 SQL 中处理 COALESCE
【发布时间】:2019-07-16 20:10:17
【问题描述】:

有一个存储过程连接表以检索所需的结果。它需要通过@cha_id 对其进行过滤,如果用户没有提供它,它将相应地采用tablea 中的任何内容。我们如何在动态 SQL 查询中处理 COALESCE?我无法得到它,因为@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)

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

【问题讨论】:

    标签: sql tsql stored-procedures dynamic-sql


    【解决方案1】:

    尝试如下

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

    【讨论】:

    • 谢谢!这将在正常脚本下工作。但我在动态 SQL 中需要它。
    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 2018-07-05
    • 2015-06-29
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多