1

データベース内の正確な数値を置き換えるのに助けが必要です。

私のテーブルはこんな感じです..

ID NAME    IMAGES
-------------------------------
1  person1  1,2,3...101,102,103

私が使うとき

mysql_query("UPDATE table SET images = REPLACE(images, '3,', '') WHERE id = '1'");

3. で終わるすべての数字から 3 をすべて削除します。

13, = 1
23, = 2
113, = 11
4

1 に答える 1

2

すでに述べたように、正しい解決策はデータを正規化することです。ただし、このテーブル構造に固執している場合でも、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'
于 2013-03-07T21:30:28.680 に答える