Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 07.01.2017, 06:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от wadim
И знать могу ли я json_encode заменить на implode.
Строка массива чисел объединенный в строку через запятую равна json-строке массив чисел, за исключением крайних символов - [ и ]. Объединяйте на здоровье, легче то от этого не станет.
Ответить с цитированием
  #22 (permalink)  
Старый 07.01.2017, 07:15
Профессор
Отправить личное сообщение для wadim Посмотреть профиль Найти все сообщения от wadim
 
Регистрация: 20.01.2014
Сообщений: 150

В mysql реализации есть замена по регулярному выражению. Я по крайней мере это сделал. Могу удалить 44 из строки 15,44,10, остается решить как удалить запятые - решу может быть. Данные хранятся так:
id qq arr
1 10 15,44,10
Происходит выборка при условии id = тому то.
Если я массив вынесу в отдельную таблицу, то мне придется в нее писать/удалять id, так как бывает нужно удалить полностью строку или создать строку в таблице, а это значит что придется со второй таблицей работать, в которую вынесем массив. К тому же удаление элемента в массиве-строке во второй таб, приведет к нулевым полям, вот так:
id1 id2 id3 ....................
15 12 16
0 13 0
10 0 0

Тоже хватит мароки. Есть ли есть другой вариант структуры - пишите, буду благодарен.
Ответить с цитированием
  #23 (permalink)  
Старый 07.01.2017, 08:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В mysql есть поиск по регулярному выражению, замены нет. А если вы такое обнаружили, заменяйте сразу с запятой, что мешает?

Про удаление и будет id равное 0, это конечно глупость.

PS. Есть оператор REPLACE(), на здоровье, заменяйте, но, если к примеру есть "11,24,2,15" и надо заменить 2 на 7, то замена этим оператором ",2" на ",7", вернет результат "11,74,7,15". Шаблон регулярного выражения да еще замену по этому шаблону сюда вставить нельзя.

Последний раз редактировалось laimas, 07.01.2017 в 08:34.
Ответить с цитированием
  #24 (permalink)  
Старый 07.01.2017, 08:32
Профессор
Отправить личное сообщение для wadim Посмотреть профиль Найти все сообщения от wadim
 
Регистрация: 20.01.2014
Сообщений: 150

Мешает то что при удалении ,44, мы получим 1510 из 15,44,10. Вообще при удалении из поля mysql мы часто имеем 0 или я сам пишу туда 0, так как мне важно что я после прочту.
Ответить с цитированием
  #25 (permalink)  
Старый 07.01.2017, 08:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Я вам уже все сказал, больше сказать нечего. И вообще, REGEXP в mysql, это не Perl RegEXP в РНР, это простейшее для поиска.

Хотите без проблем управлять данными, значит представляйте их в подобающей структуре. То что какие-то 0 при этом получаются, так это глупости от непонимания. )

Либо сложные изменения, а тем более по условию производите не средствами sql.
Ответить с цитированием
  #26 (permalink)  
Старый 08.01.2017, 02:23
Профессор
Отправить личное сообщение для wadim Посмотреть профиль Найти все сообщения от wadim
 
Регистрация: 20.01.2014
Сообщений: 150

Если удаляем к примеру 44 хоть со строки, хоть с отдельного поля (поле =44) что остается? Ноль, или что напишешь, мне нужно чтобы программа при чтении нуля понимала, что данные равны нулю или сложнее - что данных нет. иначе не корректная работа проги будет.
Ответить с цитированием
  #27 (permalink)  
Старый 08.01.2017, 05:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если удаляем запись в базе, то ничего там не остается.

То что вы пишите умом не понять. То что вы описываете есть индексный массив, и если использовать массив [1, 2, 3], в котором удален 2, то и бог с ним, нет и не надо. Но если это массив ['key_1'=>1, 'key_2'=>2,'key_3'=>3] и мы также работаем с его ключами, которые постоянны, то либо у ключа есть значение, либо null/0. То есть если переложить на базу, то ключи этого массива, есть нечто определенное в базе, а массив, это связанная по этим ключам таблица. Ключи этой таблицы (как и их значения) могут быть удалены только тогда, когда удаляется запись из основной таблицы по этому ключу.

У вас же индексный массив, и коли как-то по нему задается связь, то длина такого массива (пусть изначально и без значений) должна быть задана, а иначе как?

Я спрашивал что это за массив, связан ли он как-то с чем-то, чего мне не известно, а посему обо всех аспектах судить сложно.
Ответить с цитированием
  #28 (permalink)  
Старый 18.01.2017, 18:25
Профессор
Отправить личное сообщение для wadim Посмотреть профиль Найти все сообщения от wadim
 
Регистрация: 20.01.2014
Сообщений: 150

У меня конкретный вопрос как из строки 15,44,10 путем sql запроса удалить 44, с ключами понятно, если я пишу 15,44,10 и в этой строке нет ключей, значит меня это устраивает, ключи получим при прочтении, мне не нужна связь ключей со значениями. Я удаляю значение, после сдвигаю ключи массива. Но все это и так понятно и работает, вопрос как sql запросом удалить значение со строки.
Ответить с цитированием
  #29 (permalink)  
Старый 18.01.2017, 19:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от wadim
У меня конкретный вопрос как из строки 15,44,10 путем sql запроса удалить 44
Я уже рассказывал какие есть для этого в MySQL средства, и то, что держать данные в базе, которые подвергаются таким изменениям, в виде строки, это геморрой. Что еще добавить?
Ответить с цитированием
  #30 (permalink)  
Старый 22.01.2017, 09:29
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

я брал строку, преобразовывал json_decode, менял как надо, обратно json_encode и снова запись, действительно расстраивает, что база насилуется, но никогда не слышал, что можно менять строку прямо в базе, удалил 44 и не знаешь как удалить ,44
можешь рассказать как ты удалил 44?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать массив в базу mysqli. wadim Серверные языки и технологии 0 04.01.2017 18:10
Как записать массив в базу mysqli. wadim Общие вопросы Javascript 1 04.01.2017 18:05
Как записать видео из canvas? Dimaz Общие вопросы Javascript 6 10.09.2014 21:39
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05