搜尋

首頁  >  問答  >  主體

替換使用SQL的逗號分隔清單中的特定值

<p>我需要在逗號分隔的清單中取代特定的值。 </p> <p>例如,假設我有列名為Tags的列,填入以下內容:Holidays, Holidays 2023, Test。 </p> <p>我只需要將單字'Holidays'替換為'Holiday',但是我不希望將'Holidays 2023'替換為'Holiday 2023'。 </p> <p>我嘗試使用replace函數和WHERE子句中的LIKE,但是它不起作用。我正在使用PHP作為後端,但我不知道如何避免這種情況。 </p> <p>以下是我使用的SQL:</p><p> <code>UPDATE Expenses SET Tags = REPLACE(Tags, :original, :replace), Updated_date = :update_date WHERE Id_user = :id_user AND Tags LIKE :original_like</code> <ul> <li><em>:original</em> contain the list: <strong>Holidays, Holidays 2023, Test</strong></li> <li><em>:replace</em> contain only the word <strong>Holiday</strong></li> </ul><p><br /></p>
P粉248602298P粉248602298484 天前492

全部回覆(1)我來回復

  • P粉180844619

    P粉1808446192023-08-09 16:23:28

    在您的值之前加上一個前導逗號和空格,然後加上一個尾隨逗號-然後將其中的, Holidays, 替換為 , Holiday,。
    n在之後再次刪除結果中的前導和尾隨逗號

    SELECT TRIM(',' FROM REPLACE(CONCAT(', ', Tags, ','), ', Holidays,', ', Holiday,'))

    使用特定值範例 No Holidays, Holidays, Holidays 2023, Holidays, Test, Holidays inserted directly instead of getting it from the 直接插入而不是從標籤列中取得的假期 column:

    SELECT TRIM(',' FROM REPLACE(
      CONCAT(', ', 'No Holidays, Holidays, Holidays 2023, Holidays, Test, Holidays', ','),
      ', Holidays,',
      ', Holiday,')
    )

    會導致的結果為:

    No Holidays, Holiday, Holidays 2023, Holiday, Test, Holiday

    回覆
    0
  • 取消回覆