0

以下は行フィルターとして許可されていないことを知っています

「カナダ%.txt」または「カナダ*.txt」

フィルターを次のように書き換えることができると思います

file_name like 'Canada%' and file_name like '%.txt' 

動作するはずです。

しかし、 % がどこにあるかを判断して文字列を分割する代わりに、より簡単な方法はありますか?

4

2 に答える 2

1

フィルター式で 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-27T18:17:33.160 に答える
0

これが私が思いついた解決策です

    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();
    }
于 2010-04-28T17:37:02.177 に答える