是否可以拆分SQL单元格,然后比较字符串?

时间:2011-12-05 14:25:03

标签: sql asp-classic

我有这种情况: 一个名为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行中完成所有操作? :)

1 个答案:

答案 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键入组表