Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.12.2016, 03:41
Аспирант
Отправить личное сообщение для zawm Посмотреть профиль Найти все сообщения от zawm
 
Регистрация: 08.02.2015
Сообщений: 46

MySQL UPDATE одним запросом если в записи есть разделитель
Здравствуйте!

Существует ли возможность UPDATE без начального SELECT если поле содержит разделитель? Т.е. запись в таблице имеет вид "XXX|YYYY", мне надо к YYY прибавить новое значение, при этом ХХХ не трогая.


Пример. Было "777|0.123" Надо к 0.123 добавить новое значение переменной $new (пусть будет 1), чтобы получилось "777|1.123"

Есть ли возможность это сделать UPDATE одним запросом? Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 28.12.2016, 09:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от zawm
Т.е. запись в таблице имеет вид "XXX|YYYY"
Кто вас надоумил хранить данные в таком формате? Читайте о нормализации и приведите представление данных в базе к человеческому, ибо использовать REGEXP для поиска, выборки по условию и обновления будет слишком накладно.
Ответить с цитированием
  #3 (permalink)  
Старый 28.12.2016, 11:04
Аспирант
Отправить личное сообщение для zawm Посмотреть профиль Найти все сообщения от zawm
 
Регистрация: 08.02.2015
Сообщений: 46

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

Наверное зря я спросил. Просто сейчас дописываю модуль и решил ради интереса найти решение одним запросом. Экономии мало конечно, учитывая что данный запрос редкий. Просто интересно стало - как это можно реализовать.

Последний раз редактировалось zawm, 28.12.2016 в 11:10.
Ответить с цитированием
  #4 (permalink)  
Старый 28.12.2016, 12:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Можно, если очень редко, длина строкового значения фиксирована и это одна запись:

'UPDATE table SET field = INSERT(field, 5, 5, SUBSTRING(field, 5)+'.$add.')'


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

Последний раз редактировалось laimas, 28.12.2016 в 12:22.
Ответить с цитированием
  #5 (permalink)  
Старый 28.12.2016, 18:57
Аспирант
Отправить личное сообщение для zawm Посмотреть профиль Найти все сообщения от zawm
 
Регистрация: 08.02.2015
Сообщений: 46

Сообщение от laimas Посмотреть сообщение
Можно, если очень редко, длина строкового значения фиксирована и это одна запись:

'UPDATE table SET field = INSERT(field, 5, 5, SUBSTRING(field, 5)+'.$add.')'


Когда думают, что "через разделитель, чтобы не занимать 2 ячейки таблицы", это экономно, круто, тогда и попадают в самые неприятные ситуации. В MySQL нет реализации замены по рег. выражению, есть только поиск по нему.
Не - не фиксирована. Это может быть любым числом, как целым так и дробным
Ответить с цитированием
  #6 (permalink)  
Старый 28.12.2016, 19:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от zawm
Это может быть любым числом, как целым так и дробным
И в чем смысл такого "выигрыша" запихнуть строкой в одно поле?

Значит получайте как две подстроки до и после разделителя, соединяя затем после модификации второй.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка Unexpected token ILLEGAL если есть перенос строки в тексте kuchuluk Серверные языки и технологии 9 25.08.2014 22:52
Если класс есть на странице, значит выполнить код! FreeZon Общие вопросы Javascript 11 10.08.2014 21:37
Найти и отметить radio с определенным id, если radio с этим id есть. Globus Общие вопросы Javascript 2 15.04.2014 20:41
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
проблема с mysql запросом bushstas Серверные языки и технологии 0 29.01.2013 20:34