我需要帮助替换数据库中的确切数字。
我的表看起来像这样..
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
答案 0 :(得分: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'