2017-07-14 12 views
0

rowfilterの条件が大文字と小文字を区別してSQLクエリを変換しようとしていますが、動作していません。dataview RowfilterでSQLクエリを変換できません

これは私のSQLクエリです:

select * 
from myview 
where myview.CHARGE_CODE = (CASE 
           WHEN 'ALL' = 'ALL' THEN CHARGE_CODE 
           ELSE '1023' 
          END) 

、これはRowFilterのクエリです:

dt.DefaultView.RowFilter = "CHARGE_CODE=(CASE '"+ddlCharge_Code.SelectedValue +"' when 'ALL' THEN CHARGE_CODE ELSE '"+ ddlCharge_Code.SelectedValue+"' END)"; 

私はC#で、私のSQLクエリを変換する方法を教えてください。

答えて

0

あなたは同じ方法で変換していません。 MySQLのクエリでは、チェックがあります。'ALL'='ALL'これはすべて真です。したがって、次の文は、あなたの元のクエリと同じ結果をもたらすであろう:

dt.DefaultView.RowFilter = "CHARGE_CODE=CHARGE_CODE"; 

私が思うに、あなたがチェックする条件をmissplacedこと:あなたがRowFilterのにそれを翻訳した場合

select * from myview where myview.CHARGE_CODE = CHARGE_CODE 

は、あなたが得る定義されましたに対して。私はそれがあるべきとします

dt.DefaultView.RowFilter = "CHARGE_CODE='"+ddlCharge_Code.SelectedValue + "'"; 
+0

に動作しますALLは、内のすべてのレコードを表しますあなたのクエリはここで動作しません。 – abhishek

+0

私は複数の選択基準を持っています。すべてのcharge_codeまたはsingleを選択できるので、ユーザーがすべてを選択するとすべてのcharge_codeが表示されます。または、ユーザーが単一のcharge_codeを選択すると、それに従って表示されます。 – abhishek

1

オプションのパラメータをチェックして、クエリに追加する方が良いだろうが、これは私のSQLクエリで

var paramValue = ddlCharge_Code.SelectedValue; 
string filter = string.Format("('{0}' = 'ALL') OR ('{0}' <> 'ALL' AND CHARGE_CODE = '{0}')", paramValue); 
dt.DefaultView.RowFilter = filter; 
関連する問題