在MSSQL中,我可以像这样过滤一个电话号码的查询:
where replace(phone,'-','') Like '%480555%'
我想弄清楚如何在数据源上执行此操作。普通查询如下所示:
Dim stringFilter As String = String.Empty
String.Format("phone Like '%480555%'")
ViewCustomersBindingSource.Filter = stringFilter
但是,这不会找到任何结果,因为数据源中包含带连字符的值。 REPLACE不是过滤的有效参数。
我最初的想法是更新MSSQL视图以删除连字符。但是,为了显示,我想显示连字符。我不能假设它们看起来都一样,因为某些电话号码可能与美国不同。
是否有另一种方法来过滤电话号码并忽略连字符?
答案 0 :(得分:0)
我不认为您可以直接在binding source
上设置忽略连字符(如第一个查询中)的过滤器。过滤器表达式列中没有可能的字符串操作。从http://msdn.microsoft.com/fr-fr/library/system.windows.forms.bindingsource.filter.aspx开始,唯一允许的字符串操作是+
。
但是您可以保留并显示包含连字符的原始列,并添加另一个不显示的列(没有连字符),但只用于过滤。
使用 MSSQL ,您可以添加使用computed column功能的REPLACE。
以下是一些可以帮助您创建计算列的链接:
希望这有帮助。