You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET DataView RowFilter多条件过滤:NOT LIKE条件不生效

问题分析与解决

你的过滤规则失效的核心问题是逻辑运算符使用错误,括号里的OR会直接抵消NOT LIKE的效果。

原逻辑的问题

原语句中括号内的条件是:

CUSTOMER_ID NOT LIKE '4570*' OR CUSTOMER_ID <> '1604002' OR CUSTOMER_ID <> '3708001'

只要满足其中任意一个条件,数据就会被保留。比如某个客户ID是4570123,它虽然匹配4570*,但不等于1604002,OR条件依然成立,这条数据会被留下来,导致NOT LIKE的规则形同虚设。

修正后的过滤规则

需要把括号内的OR换成AND,确保同时满足三个排除条件:

dvShipList.RowFilter = "ASNNEED = 'Y' AND ASNFLAG <> 'Y' AND (CUSTOMER_ID NOT LIKE '4570*' AND CUSTOMER_ID <> '1604002' AND CUSTOMER_ID <> '3708001')";

或者用更简洁的写法,逻辑更直观:

dvShipList.RowFilter = "ASNNEED = 'Y' AND ASNFLAG <> 'Y' AND NOT (CUSTOMER_ID LIKE '4570*' OR CUSTOMER_ID IN ('1604002','3708001'))";

两种写法效果完全一致,都能正确排除:

  • 以4570开头的客户ID
  • 精确等于1604002或3708001的客户ID

关于通配符的说明

你尝试的*和%都可以在DataView的RowFilter中作为通配符使用,这里的问题和通配符无关,完全是逻辑结构的问题。

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:10:28