告诉你,这样来很好!就是定义一个字段来保存数据:
type varchar(100)
保存数据为:|2|3| 表示是:贸易型和服务型
而在网页里用:
<input type="checkbox" name="jyms" value="1">生产型
<input type="checkbox" name="jyms" value="2">贸易型
<input type="checkbox" name="jyms" value="3">服务型
<input type="checkbox" name="jyms" value="4">政府或其他机构在接收端:
types=trim(Request.Form("jyms"))
type_id=""
if types<>"" then
types=replace(types," ","") dim arrtrade,itrade
arrtrade=split(types,",")
for itrade=0 to ubound(arrtrade)
type_id=type_id & "|" & arrtrade(itrade)
next
type_id=type_id & "|"
end if
在搜索的时候 SQL 里使用:
CHARINDEX('|" & type & "|',type)>0
就可以搜索出来
type varchar(100)
保存数据为:|2|3| 表示是:贸易型和服务型
而在网页里用:
<input type="checkbox" name="jyms" value="1">生产型
<input type="checkbox" name="jyms" value="2">贸易型
<input type="checkbox" name="jyms" value="3">服务型
<input type="checkbox" name="jyms" value="4">政府或其他机构在接收端:
types=trim(Request.Form("jyms"))
type_id=""
if types<>"" then
types=replace(types," ","") dim arrtrade,itrade
arrtrade=split(types,",")
for itrade=0 to ubound(arrtrade)
type_id=type_id & "|" & arrtrade(itrade)
next
type_id=type_id & "|"
end if
在搜索的时候 SQL 里使用:
CHARINDEX('|" & type & "|',type)>0
就可以搜索出来
如果用Like 或 Charindex 试必会导至查询速度下降.where 语句表达式中左边用任何函数, 将会导至索引失效. 因此大数据表不适合用这种方法.
CHARINDEX('|" & type & "|',type)>
模式 int references 经营模式字典(id))查询经营模式@c(并且假设它是字符)的企业:
select * from 企业 as q where exists(select * from 企业经营模式 as m inner join
经营模式字典 as d on m.模式=d.id where on m.企业代码=q.代码 and m.名称=@c)
例如: type char(4)
用四位字符表示不同的状态, 1000 表示是生产型; 1100 表示是生产和贸易型等这种方法不错,在往数据库写入和查询之前处理一下就可以了,
一个字段表示一个类型的状态(选还是未选)
查 1+3=4 : where Type in(4,9,11,16)
查 3+5=8: where Type in(8,9,15,16)
.............
---------------------------------------------------------
不会。因为,在数据比较多时,查询优化器的决策和“我的做法”相同。(呵呵,信不信由你!)如果变为inner join,那么机检索出来的“企业”数据有重复行,必须使用distinct,这样反而大大降低了速度。select * from 企业 as q where exists(select * from 企业经营模式 as m inner join
经营模式字典 as d on m.模式=d.id where on m.企业代码=q.代码 and m.名称=@c)
但会把, '1100' 生产型/贸易型 过滤掉, 这个就是主要的问题.2) 定义一个字段
例如: type char(4)
用四位字符表示不同的状态, 1000 表示是生产型; 1100 表示是生产和贸易型等