我知道以下内容不允许作为行筛选器
'canada%.txt‘或'canada*.txt’
我想我可以将我的过滤器重写为
file_name like 'Canada%' and file_name like '%.txt' 应该行得通。
但是,有没有一种更简单的方法来代替确定%的位置并分割字符串呢?
发布于 2010-04-28 02:17:33
我不认为筛选器表达式中允许使用CHARINDEX。
您可以尝试从C#动态构建过滤器字符串(非常未经测试,但以下是一种可能的语法):
//split the original string using the wildcard as the delimiter
string[] f = s.Split('%');
//use the resulting array to build the resultstring
string resultstring = 'file_name like "' + f[0] + '%" and file_name like "%' + f[1] + '"'
//view.RowFilter = resultstring;发布于 2010-04-29 01:37:02
这是我想出的解决方案
private string CreateRowFilter(string remoteFilePattern)
{
string[] pattern = remoteFilePattern.Split(new char[] { '*', '%' });
int length = pattern.GetUpperBound(0);
if (length == 0)
{
return String.Format("Name = '{0}'", pattern[0]);
}
StringBuilder fileter = new StringBuilder(
String.Format("Name LIKE '{0}*' ", pattern[0]));
for (int segment = 1; segment < length; segment++)
{
fileter.Append(
String.Format("AND Name LIKE '*{0}*' ", pattern[segment]));
}
if(String.IsNullOrEmpty(pattern[length]) == false)
{
fileter.Append(
String.Format("AND Name LIKE '*{0}' ", pattern[length]));
}
return fileter.ToString();
}https://stackoverflow.com/questions/2723672
复制相似问题