Ersetzen Sie einen bestimmten Wert in einer durch Kommas getrennten Liste mithilfe von SQL
P粉248602298
P粉248602298 2023-08-08 17:29:43
0
1
484
<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粉248602298
P粉248602298

Antworte allen(1)
P粉180844619

在您的值之前添加一个前导逗号和空格,然后添加一个尾随逗号-然后将其中的, 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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage