1
where a.system_nr =''''5300'''' and
      a.external_status_cd = '''''''' and
      a.cust_acct_id = b.rel_cust_acct_id and
      b.cust_acct_id = c.cust_acct_id and
      c.cust_acct_id = d.cust_acct_id and
      d.acct_status_cd = ''''OPEN'''' and
      d.time_mnth_gen_id =''''' + @BegDate + ''''' and
      a.cust_acct_id = e.cust_acct_id and
      e.tran_dt >=''''' + @BegDate + ''''' and 
      e.tran_dt<=''''' + @EndDate + ''''' and 
      d.portfolio_cd = ''''HEQ'''' and
      a.time_mnth_gen_id =''''' + @BegDate + ''''' '')'

这是已经写好的 where 条件,我需要进行更改。

你能告诉我他们为什么使用'''''+@begdate'''''吗?我可以用'+Bedate'吗?我的意思是他们为什么要使用'''''每一面?

4

2 回答 2

0

在没有看到 SQL 的其余部分的情况下,我的猜测是:

  1. 用于动态 SQL 作为@BegDate变量,并且语句以单引号结尾
  2. 数据包含一堆单引号

您不应该仅仅'+BegDate'因为它是一个变量而剥离它@会导致它被评估为一个字段。

如果您只想减少单引号的数量,我想原作者将它们放在那里是有原因的。您可以使用原始单引号运行查询,然后再次使用减少的单引号运行查询,看看您是否获得相同的结果集。

于 2011-04-18T07:41:53.387 回答
0

在 SQL Server 中试试这个:

select '''''someval'''''

您注意到该项目给出:

''someval''

在 SQL Server''中将等同于单引号字符,所以上面的行是

select [open string][single quote][single quote]someval[single quote][single quote][close string]
于 2011-04-18T07:12:54.960 回答