2016-06-10 66 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-出现在记录中 – Rumpelstinsk

+0

规范化数据并将每个数字存储在单独的记录中会容易得多。 – Shadow

+0

你的字符串是否包含'['和']'?无论您的输入是正确的还是您的输出。我假设你不是指“前1”,而是“完整的整数值”,对不对?所以如果你替换1,'[21,31]'不会变成'[2,31]''? – 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