- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем привет. Возможно ли как-нибудь в одном поле таблицы бд хранить несколько числовых значений? Если да, то как это делается и как потом можно выбрать отдельно каждое значение из поля?
1 поле - 1значение. Не понятно зачем так делать, но like вам в помощь
serialize 🍿
Всем привет. Возможно ли как-нибудь в одном поле таблицы бд хранить несколько числовых значений? Если да, то как это делается и как потом можно выбрать отдельно каждое значение из поля?
Зависит от СУБД. PostgreSQL, например, умеет. MySQL - нет.
Но обычно такое желание говорит о том, что у вас неправильно спроектирована схема данных, т.е. не проведена нормализация.
Если да, то как это делается и как потом можно выбрать отдельно каждое значение из поля?
Записываете в текстовое поле значения через любую "нецифру": '#15#55#-88#' и потом выбираете запросом ИмяПоля LIKE '%#15#%'.
Такая "денормализация" имеет смысл, только если значение(и выборок по ним) - не много.
... как потом можно выбрать отдельно каждое значение из поля?
Как вариант - substr() или substring(), которые быстрее like.
Если да, то как это делается и как потом можно выбрать отдельно каждое значение из поля?
Записываете в текстовое поле значения через любую "нецифру": '#15#55#-88#' и потом выбираете запросом ИмяПоля LIKE '%#15#%'.
Такая "денормализация" имеет смысл, только если значение(и выборок по ним) - не много.
Или выбираете всё поля и на php делаете $arr = explode('#', $row['ИмяПоля']), но надо убирать пустые поля от крайних #.
Как вариант - substr() или substring(), которые быстрее like.
regexp
В одном поле возможно хранить несколько значений, значение которых по отдельности не имеет значения. Например так можно хранить имена файлов картинок товара с разделителем из запрещенного в именах файлов символе. Теоретически можно и описание туда засунуть - через еще один разделитель, но практически при таком хранении описаний не будет.
используйте тип поля enum
Легко.
допустим, вы знаете, что максимум у вас число 16 бит 0-65535 или 0 - ffff
тогда, если у вас поле в 64 бита, то там можно положить сразу 4 значения
как пример у вас 4 цифры
0 - 1045;
1 - F0FA'
2 - A012
4 - 0000
тогда упакованное поле примет вид
a012F0FA1045
для экстракта можно пользовать MID(str,pos,len)
кстати, это типичный способ сохранения данных для SIMD инструкций, например SSE2 только поле там не 64 бита, а 128 а сами числа как правило 64 битные