Previous Entry Share Next Entry
array integer
dewil wrote in ru_mysql
Всем привет.

В PgSql есть тип integer[] (array integer).
На сколько я помню в MySql 4.1 нет массивных типов.
Что можно придумать для такого типа?
Все что пока пришло в голову: '|1|2|3|' и делать выборку через lile '%|2|%', например.
Покритикуйте.

  • 1
Плохо помните

С другой стороны, попытка применения массива в SQL обычно означает ошибку проектирования.

Т.е. мне в SET перечислить все числа от 0 до 2147483647 при создании таблицы?

Не буду спорить про ошибки проектирования, но эти типы есть и их используют.

Тип SET ограничен 256 элементами.

Если вы опишете задачу в бизнес-терминах, я смогу давать более релевантные рекомендации.

Если сренее число элементов в массиве будет невелико, можно действительно имитировать то, что вы описали, за счёт отдельной таблицы со значениями массива, соединённой с данной как 1:N, а собирать массив через JOIN и GROUP_CONCAT - это существенно облегчит операции вставки и удаления элементов массива, если делать это на уровне СУБД.

интересно вы сам читаете то что советуете? по линку прямо написано:
A SET can have a maximum of 64 different members.

ну я по памяти воспроизводил

судя по тому, что говорит вопрощающий, важны порядки, а не конкретные значения

помоему о порядках ни слова не было.
мне нужен массив, а не ограниченное множество элементов.
теперь ясно, с мускуле нет ничего подобного. разумней будет завести таблицу.

вы же ясно сказали выше, что у вас возможны до 2*109+ различных значений - int есть int

любые решения, типа массива, нарущающего 1НФ, вполне можно использовать там, где это оправдано

насколько оправдано у вас - не знаю, т.к. неясны требования

это просто статистическое наблюдение, выраженная как рекомендация

Set - это множество, а не массив.

да я помню, но с точки зрения операций, заявленных в посте - это не так важно.

там как раз проверяется, нет ли среди некоторого ряда некоторого значения. операций "взять n-й элемент" там нет

  • 1
?

Log in