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 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 に答える
0

残りの SQL を見なければ、私の推測では次のようになります。

  1. 変数として動的 SQL で使用し@BegDate、単一引用符で終わるステートメントがある場合
  2. データには一重引用符がたくさん含まれています

'+BegDate'それが変数であり、それを取り除くと@フィールドとして評価されるという理由だけでできるはずはありません。

単一引用符の数を減らすだけのつもりなら、元の作成者が何らかの理由で単一引用符をそこに置いたと思います。元の一重引用符を使用してクエリを実行し、縮小された一重引用符を使用してクエリを実行し、同じ結果セットが得られるかどうかを確認できます。

于 2011-04-18T07:41:53.387 に答える