1

在 MSSQL 中,我可以像这样过滤对电话号码的查询:

where replace(phone,'-','') Like '%480555%'

我试图弄清楚如何在数据源上执行此操作。一个普通的查询如下所示:

Dim stringFilter As String = String.Empty
String.Format("phone Like '%480555%'")
ViewCustomersBindingSource.Filter = stringFilter

但是,这不会找到任何结果,因为数据源中包含带有连字符的值。REPLACE 不是过滤的有效参数。

我最初的想法是更新 MSSQL 视图以去除连字符。但是,为了显示,我想显示连字符。我不能假设它们看起来都一样,因为某些电话号码可能与美国不同。

是否有另一种方法可以过滤电话号码并忽略连字符?

4

1 回答 1

0

我不认为你可以直接设置一个过滤器来忽略你的binding source. 过滤表达式列中不能进行字符串操作。从这个http://msdn.microsoft.com/fr-fr/library/system.windows.forms.bindingsource.filter.aspx唯一允许的字符串操作是+.

但是您可以保留并显示包含连字符的原始列,并添加您不显示但仅用于过滤的另一列(不带连字符)。

例如,使用MSSQL,您可以添加一个使用REPLACE函数的计算列。

这是一些可以帮助您创建计算列的链接:

希望这可以帮助。

于 2013-05-31T17:52:44.403 回答