我发现如果有NULL空置,结果就不准了,应该怎么改呢?[/quote]
我自己已经弄好了,一种是代码不变把数据库中xtbz里面的NULL改成空白,还有一种是代码第二行中改成(isnull(mark,'')=NULL and isnull(xtbz,isnull(bgsd,'')) like '%自取%')就好了[/quote]
这么写也可以,但数据量大时是用不到索引的,非常不优化
在前台用setfilter更好一些
string ls_filter
ls_filter = "(mark like '%自取%') or "
ls_filter += "(xtbz like '%自取%') or "
ls_filter += "(bgsd like '%自取%')"
dw_1.setfilter(ls_filter)
dw_1.filter()[/quote]
你好,我是新手,我想问问,我现在是直接用sql where的方式查询的,这样是不是效率低?也用不了索引吗?还有,你上面这种没有优先级,不行的,我要实现首先查看mark中的记录,没有之后在查找xtbz的内容,最后前面都没有才用bgsd中的内容,也就是说如果mark中符合条件了,xtbz和bgsd后面不管是什么都不用管,同理如果mark为空,那么就找xtbz的,如果找到后,不管bgsd是什么都不用管
我发现如果有NULL空置,结果就不准了,应该怎么改呢?[/quote]
我自己已经弄好了,一种是代码不变把数据库中xtbz里面的NULL改成空白,还有一种是代码第二行中改成(isnull(mark,'')=NULL and isnull(xtbz,isnull(bgsd,'')) like '%自取%')就好了[/quote]
这么写也可以,但数据量大时是用不到索引的,非常不优化
在前台用setfilter更好一些
string ls_filter
ls_filter = "(mark like '%自取%') or "
ls_filter += "(xtbz like '%自取%') or "
ls_filter += "(bgsd like '%自取%')"
dw_1.setfilter(ls_filter)
dw_1.filter()
我发现如果有NULL空置,结果就不准了,应该怎么改呢?[/quote]
我自己已经弄好了,一种是代码不变把数据库中xtbz里面的NULL改成空白,还有一种是代码第二行中改成(isnull(mark,'')=NULL and isnull(xtbz,isnull(bgsd,'')) like '%自取%')就好了
select * from customer_report
where
(isnull(mark,isnull(xtbz,isnull(bgsd,''))) like '%自取%') or
(isnull(mark,'')='' and isnull(xtbz,isnull(bgsd,'')) like '%自取%') or
(isnull(mark,'')='' and isnull(xtbz,'')='' and isnull(bgsd,'') like '%自取%' )