Можно ли разбить SQL-ячейку, а затем сравнить строки? - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть такой сценарий: Таблица с именем 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 Ответ

4 голосов
/ 05 декабря 2011

Нормализуйте свои данные.

Наличие нескольких значений в одном поле (через запятую или иным образом) является плохим антишаблоном.Он снижает производительность, закрывая оптимизатор от использования индексов, и затрудняет написание и обслуживание запросов.

Вместо этого измените схему на отношение 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 к таблицегрупп

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...