PHP Mysql更新集替换精确匹配
我需要帮助替换数据库中的确切数字 我的桌子看起来像这样PHP Mysql更新集替换精确匹配,php,mysql,replace,preg-replace,match,Php,Mysql,Replace,Preg Replace,Match,我需要帮助替换数据库中的确切数字 我的桌子看起来像这样 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 如前所述,
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
如前所述,正确的解决方案是规范化数据。但是,如果您仍然使用此表结构,您仍然可以使用3个
CASE
条件执行单个UPDATE
语句,以匹配开头、中间或结尾的数字
要从列表的开头或结尾删除它,可以使用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'
您不应在其中一个字段中使用逗号分隔的列表。规范化数据库并将图像/图像ID存储在单独的表中。您应该规范化数据。这样更容易操作。在3之前添加逗号?mysql_查询(“更新表集images=REPLACE(images,”,3,”),其中id='1');顺便说一句,previups注释是可以的,您应该规范化您的数据。您希望发生什么?你告诉我们发生了什么,但不是你想要的结果。