以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码太长 怎么优化like代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186439)

--  作者:pyh6918
--  发布时间:2023/5/3 11:49:00
--  代码太长 怎么优化like代码?
DataTables("专业").LoadFilter = "专业名称 like \'%哲学%\' or 专业名称 like \'%逻辑学%\' or 专业名称 like \'%宗教学%\' or 专业名称 like \'%伦理学%\' or 专业名称 like \'%经济学类%\' or 专业名称 like \'%经济学%\' or 专业名称 like \'%经济统计学%\' or 专业名称 like \'%国民经济管理%\' or 专业名称 like \'%资源与环境经济学%\'"
DataTables("专业平均").Load

这段代码是在专业表中查询专业名称中包含的多个关键词,最多的关键词有800个.会出错,提示代码太长,有什么办法优化一下代码吗?
能否用IN:DataTables("专业").LoadFilter = "专业名称 in (\'%哲学%\',\'%逻辑学%\')"
in中能否用通配符?谢谢!

--  作者:有点蓝
--  发布时间:2023/5/3 14:04:00
--  
in不支持通配符

建一个字典表,存储哲学、逻辑学、...这些内容,然后使用sql查询,比如

select a.* from 专业 as a inner join 字典表 as b on a.专业名称 like \'%\' + b.第一列 + \'%\'

如果使用LoadFilter 可以这样
DataTables("专业").LoadFilter = "exists (select 第一列 from 字典表 as b where 专业.专业名称 like \'%\' + b.第一列 + \'%\')

--  作者:pyh6918
--  发布时间:2023/5/3 15:21:00
--  
多谢蓝版,我试试!
--  作者:pyh6918
--  发布时间:2023/5/4 14:49:00
--  
字典不支持临时表?
--  作者:有点蓝
--  发布时间:2023/5/4 14:52:00
--  
不支持