VB.Net DataTable.Select使用Like运算符无返回结果问题
问题原因及解决方法
核心问题是DataTable.Select()的表达式语法中,Like运算符的通配符规则和标准SQL不一致:
你写的%和_在DataTable表达式里会被当作普通字面字符,而非通配符,所以%0__会被解释为“严格匹配以%开头、接着0、再两个_的字符串”,自然找不到符合条件的行。
正确的写法
把通配符替换成DataTable表达式支持的规则:
- 用
*代替SQL中的%(匹配任意长度的任意字符) - 用
?代替SQL中的_(匹配单个任意字符)
修改后的Like条件应为:
col_b like '*0??'
完整筛选表达式
组合所有规则后的最终表达式:
"col_a > 'H00' and col_a < 'HZZ' and col_b > '0000000000000' and col_b < 'ZZZZZZZZZZZZZ' and col_b like '*0??'"
如果你的col_b字段本身包含*或?这类需要转义的字符,可使用方括号[]包裹(比如[*]代表匹配字面的*),但根据你的需求,替换通配符即可解决无返回行的问题。
内容的提问来源于stack exchange,提问作者Tym
相关产品推荐
相关产品推荐

