suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Ersetzen Sie einen bestimmten Wert in einer durch Kommas getrennten Liste mithilfe von SQL

<p>Ich muss bestimmte Werte in einer durch Kommas getrennten Liste ersetzen. </p> <p>Angenommen, ich habe eine Spalte mit dem Namen „Tags“, die mit folgendem Inhalt gefüllt ist: Feiertage, Feiertage 2023, Test. </p> <p>Ich muss nur das Wort „Feiertage“ durch „Feiertage“ ersetzen, aber ich möchte „Feiertage 2023“ nicht durch „Feiertage 2023“ ersetzen. </p> <p>Ich habe versucht, die Ersetzungsfunktion und LIKE in der WHERE-Klausel zu verwenden, aber es hat nicht funktioniert. Ich verwende PHP als Backend, weiß aber nicht, wie ich das vermeiden kann. </p> <p>Das Folgende ist das SQL, das ich verwende:</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></p> <ul> <li><em>:original</em> enthält die Liste: <strong>Feiertage, Feiertage 2023, Test</strong></li> <li><em>:replace</em> enthält nur das Wort <strong>Holiday</strong></li> </ul><p><br /></p>
P粉248602298P粉248602298483 Tage vor488

Antworte allen(1)Ich werde antworten

  • 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

    Antwort
    0
  • StornierenAntwort