统一SQL和DataView过滤语法

时间:2019-12-30 08:54:11

标签: sql datatable

我正在为我的Oracle SQL请求构建动态过滤器,我希望它们也可以与DataView的RowFilter一起使用。

似乎RowFilter的语法不如SQL丰富,因此它不支持诸如TRANSLATEUPPER,...的功能……我可以将COALESCE替换为IIFUPPERdt.CaseSensitive = false,但实际上并不等效。

问题是:是否有统一的方法为SQL和DataView编写过滤器代码?

DataTable data = new DataTable();
string filters = "upper(playerName) like '%son' AND translate(playerName, 'sen', 'son') = 'hanson'";

using (OracleDataAdapter cmd = new OracleDataAdapter(string.Format(@"SELECT * FROM players
    WHERE {0}", filters), connexion))
{
    cmd.Fill(data);
}

data.DefaultView.RowFilter = filters; // Will fail with System.Data.EvaluateException

Ref:DataColumn expressions

0 个答案:

没有答案