我有这种情况:
一个名为table 1
的表,其中一列名为groups
。
我那列有一系列我需要拆分的组,然后与变量myGroup
进行比较
目前我这样做:
myGroup = 32
trueGroup = false
sql = "select * from table1 where groups like '%" & myGroup & "%'"
set rs = conn.execute(sql)
if not rs.eof
do until rs.eof
title = rs("title")
groups = rs("groups")
groupsSplitted = split(groups, ",")
for i = lbound(groupsSplitted) to ubound(groupsSplitted)
if cint(myGroup) = cint(groupsSplitted(i)) then
trueGroup = true
end if
next
if trueGroup
response.write(title)
end if
next
end if
是否可以在SQL行中完成所有操作? :)
答案 0 :(得分:4)
规范化您的数据。
在单个字段中具有多个值(以逗号分隔或以其他方式)是一种糟糕的反模式。它通过使优化器盲目使用索引来破坏性能,并使查询难以编写和维护。
相反,请将您的架构更改为1:多关系......
CREATE TABLE map_title_to_group (
title_id INT,
group_id INT,
PRIMARY KEY (group_id, title_id)
)
然后您的查询被简化......
SELECT title_id FROM map_title_to_group WHERE group_id = ?
你甚至可以强制执行约束......
- title_id外键以标题表为中心
- group_id foreign键入组表