すでに述べたように、正しい解決策はデータを正規化することです。ただし、このテーブル構造に固執している場合でも、3 つの条件を使用して、先頭、中間、または末尾の数字を一致させる単一のUPDATE
ステートメントを実行できます。CASE
リストの最初または最後から削除するには、SUBSTR()
, を使用REPLACE()
して、リストの中央から削除します。
UPDATE
table
SET images =
CASE
/* if 3 is in the leftmost position in the list, remove first 2 chars... */
WHEN LEFT(images, 2) = '3,' THEN SUBSTR(images, 3)
/* if 3 is in the rightmost position in the list, remove last 2 chars... */
WHEN RIGHT(images, 2) = ',3' THEN SUBSTR(images, 1, LENGTH(images) - 2)
/* Otherwise replace a single 3 bounded by commas with a single comma */
ELSE REPLACE(images, ',3,', ',')
END
WHERE id = '1'