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来匹配开头、中间或结尾的数字。

要将其从列表的开头或结尾删除,您可以使用 a 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 回答