2016-06-10 5 views
0

У меня есть column(pro_doc) строка как [1,2,11,]Mysql заменить не всю строку?

UPDATE product SET prod_doc = REPLACE(prod_doc, '1,' , '') WHERE prod_id = 2 

В результате 2,1

Я хочу стать 2,11,

Я просто хочу заменить первый 1, не все 1,

Есть какое-либо решение ?

Большое спасибо ...

+2

Посмотрите на: http://stackoverflow.com/questions/12123477/sql-search-replace-but-only-the-first-time-a-value- in-record – Rumpelstinsk

+0

Было бы намного легче нормализовать ваши данные и сохранить каждое из номеров в отдельной записи. – Shadow

+0

В вашей строке содержатся '[' и ']' или нет? Либо ваш вход правильный, либо ваш выход. И я предполагаю, что вы не имеете в виду «первый 1», но «полное целочисленное значение», верно? Поэтому '[21,31]' не станет '[2,31]', если вы замените '1,'? – Solarflare

ответ

0

Использование SUBSTRING_INDEX.
Найдите общее количество , и используйте отрицательный результат в качестве последнего аргумента функции SUBSTRING_INDEX.

UPDATE product 
SET prod_doc = 
    SUBSTRING_INDEX(
    prod_doc, ',', -(
    ROUND(
     (
     LENGTH(prod_doc) - LENGTH(REPLACE(prod_doc, ',', '')) 
    )/LENGTH(',')) 
    ) 
) 
WHERE prod_id = 2; 

SQL Fiddle Demo

Смежные вопросы