2016-06-10 4 views
0

나는 그 결과 내가 2,11되고 싶어 2,1Mysql이 모든 문자열을 대체하지 않습니까?

, 난 그냥 처음 1, 모든 1을 대체 할

,

어떤 해결책을 가지고 있습니다 column(pro_doc) 문자열

UPDATE product SET prod_doc = REPLACE(prod_doc, '1,' , '') WHERE prod_id = 2 
[1,2,11,]처럼이 ?

고마워요 ...

+2

에 한 번보세요 : http://stackoverflow.com/questions/12123477/sql-search-replace-but-only-the-first-time-a-value- 기록 있음 기록 – Rumpelstinsk

+0

데이터를 표준화하고 각 숫자를 별도의 레코드에 저장하는 것이 훨씬 쉽습니다. – Shadow

+0

문자열에'['및']'가 포함되어 있나 없습니까? 귀하의 의견이 정확하거나 귀하의 의견이 맞는지 확인하십시오. 그리고 당신은 "처음 1"을 의미하지는 않지만 "완전한 정수 값"이라고 가정합니다. 그래서'[21,31]'이'1,'을 대체하면''[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

관련 문제