簡體   English   中英

mysql 在同一列上使用多個 REPLACE 進行更新?

[英]mysql update with multiple REPLACE on same column?

我有一個表,其中有一列包含以各種逗號分隔方式列出的字符串。 我需要刪除字符串或替換字符串 - 是否可以在同一個 mysql 查詢中對列使用 REPLACE 兩次或更多次?

myTable
id    myString
================
1     15
2     15,30
3     30,45
4     30
5     30,15,45
6     45,15

我需要替換或刪除15的所有實例,但我需要考慮15是唯一的值還是由逗號分隔的多個值之一。 如果是幾個值之一,那么我需要考慮刪除第一次替換留下的額外逗號。

只需替換 15 就會留下尾隨的逗號:

IE: $query = "UPDATE myTable SET myString=(REPLACE(myString,'15',''))" ;

myTable
id    myString
================
1     
2     ,30
3     30,45
4     30
5     30,,45
6     45,

替換需要考慮值之前(或之后)的逗號 - 如果它存在並且替換任何前導逗號。

$query = "UPDATE myTable SET myString=(REPLACE(myString,'15','')),  // replace string
                 myString=(REPLACE(myString, ',,' , ',')),   //then remove double commas
                 myString=(REPLACE(myString, ',%' , '')),    //then leading commas
                 myString=(REPLACE(myString, '%,' , ''))" ;    //then trailing commas

上面的工作......用第一個替換和第二個,第三個,第四個替換清理尾隨逗號替換匹配嗎? 或者它不會因為每次替換只評估原始內容而不是更新后的內容而不起作用?

什么是更好的方法來做到這一點?

感謝@Thorsten Kettner 為該問題提供了一個很好的解決方案。

update mytable set mystring = trim(both ',' from replace(concat(',', mystring, ','), ',15,', ',')) where find_in_set('15', mystring);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM