如果查询不为null,则TSQL应用条件

时间:2017-11-28 16:53:02

标签: tsql

我在T-SQL中有这个SP

$('input').click(function() {
  var clicks = $(this).data('clicks');
  if (clicks) {
    alert('open search bar');
  } else {
    alert('enter search bar');
  }
  $(this).data("clicks", !clicks);
});

现在@DATA_INIZIO和@DATA_FINE可以为null或不为null。如果有办法更改我的查询,如果@Data_inizio不为null,则执行此条件,如果@Data_Inizio为null,则不执行此条件?

2 个答案:

答案 0 :(得分:1)

这样的事情:

SELECT COUNT(*)
FROM AA_V_ATS_Richieste R
WHERE
    R.IdTipoRichiesta = 1
    AND (R.DataInizio >= @DATA_INIZIO OR @DATA_INIZIO IS NULL)
    AND (R.DataFine <= @DATA_FINE OR @DATA_FINE IS NULL)

答案 1 :(得分:0)

如果通过&#34;执行此条件&#34;你的意思是执行查询,你可以做几个方面。

在存储过程中(或者你可以应用T-SQL过程逻辑的任何地方(例如IF / THEN / ELSE / WHILE),你可以这样做:

template <template <typename...> class Container, typename ... Ts>
class ContainerPacker {
  public:
    virtual Container<Ts...> pack(Ts...) = 0;
};

作为内联查询的一部分,您可以创建一个“启动谓词”&#39;在你的WHERE子句中如此:

IF @DATA_INIZIO IS NOT NULL
BEGIN
  SELECT COUNT(*)
  FROM AA_V_ATS_Richieste R
  WHERE R.IdTipoRichiesta = 1 
  AND   R.DataInizio >= @DATA_INIZIO
  AND   R.DataFine   <= @DATA_FINE;
END; -- note: You don't need the BEGIN/END, just including for readability

如果@DATA_INIZIO为空,则不会返回任何内容。