这个问题在这里已经有答案了:
在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
两年前关门了。
我有一个mysql数据库,其中有一个名为 customers
. 在这个表中有一个名为 preferences
,其中的内容是单个或复合名称的列表。
餐桌顾客:
id name preferences
---------------------------------
1 John pears,tomato sauce,bread
2 Rose carrot cake, salad
我可以很容易地在“首选项”字段中添加一个新条目,例如:
UPDATE `customers`
SET preferences = CONCAT(preferences,',oranges')
WHERE id=2
但是现在,我想知道是否有一种简单的方法来删除列表中的已知项,这并不意味着,读回注册表项,使用php处理它并再次保存它。
我试着用 REGEX_REPLACE
没有成功,因为这个词可以在开头,中间或结尾。因此,我没有成功地编写一个合适的表达式来替换结果。不管怎样,正则表达式可能不是正确的方法。
谢谢
1条答案
按热度按时间n3schb8v1#
试试这个:
它将删除“oranges”。如果前后没有空格
,oranges
它不会删除它。正如你所看到的,它不是一个Regex
不再。也TRIM(BOTH 'oranges'
将从字符串的第一个和最后一个位置删除“oranges”。演示