解决方案 »
- 老问题,datagridview上对数据做修改
- 为什么我自己做到web程序安装包安装不上啊?
- owssupp在线编辑word(Word2007)
- WinForm中的多线程请教,多谢!
- 财务系统中定额控制的问题
- 请教加密问题
- THHP 传输文件的问题(高分求教)
- 取字符串../img/bookhelp.gif里面的img/bookhelp.gif
- 紧急求教,盼高手解答!在线等待!
- 怎么把一个日期从String类型转换成DateTime类型???
- c#怎么实现下载后验证文件信息是否完全,怎么实现多类型解压文件的解压,如rar,zip等。
- 使用findwindow和showwindow查找和隐藏窗口,闪烁问题
如果是数字类型,最后加一个or id > 0 or id <= 0。
不过可以优化设计,用一棵树来表示
整个where条件为root 然后各个字段(外层大括号)表示为一级子节点,依次类推
每个节点可以大致表示
class Condition
{
public string Field;
public string Expression; //<>'ann'
public bool IsField
{
get{return this.Filed != null;}
}
//IsField为true时,表示为大括号里面的条件(N个并列子条件的组合),否则表示最底层小括号
public IEnumrable<Condition> Children;
public enum SqlOperator; //or and,小括号的逻辑运算
}
然后用Linq去操作会方便很多
SQL才对- -键盘连键了
field1 between field2 and field3
然后又进一步
exists(select * from table where field1 between field2 and field3) as x
或者进一步放到 inner join、group by等等里边,等等,如果你没有语法分析基础,那么你给出的所谓“分层”概念就是跟语法分析数据结构相差甚远的想当然的解释。
哎 我也不想啊 我也觉很不靠谱,关键吧 就是让我实现这么一个功能。那个表单没您说的这么复杂。他就只支持个like 和 or 查询。
这个表单上的sql 语句不是我拼接的。 说实话让我这么做的那个人 她真心不懂技术。
SQL才对- -键盘连键了那部分 不能动 ~~我只能处理拼接好的字符串。
正如5L所说,并没有从源头解决问题
如果非要这么去实现,你可以把WHERE之后的字符串进行分段,每段用OR,AND作为标记区分,然后每段里查询对应字符是否存在,如果所有段都有这个字符,就连同WHERE也清除掉