MySql-将字符串附加到列表中的特定位置

MySql-将字符串附加到列表中的特定位置,mysql,sql,Mysql,Sql,如果我的表中有一列是字符串列表,那么如何在列表中的特定项之后向表中的列表(对于所有行)追加一个新条目 for example: apple, orange, peach, banana,.... 因此,假设我想在每一行的peach条目之后添加lemon。我知道一个事实,即条目“peach”出现在每一行中,并且只出现一次(peach在列表中的位置可能不同,列表中其他项目的出现可能不同)。提前谢谢 我试过(但没有成功) 你可以试试下面的方法 create table test(test VAR

如果我的表中有一列是字符串列表,那么如何在列表中的特定项之后向表中的列表(对于所有行)追加一个新条目

for example: 
apple, orange, peach, banana,.... 
因此,假设我想在每一行的
peach
条目之后添加
lemon
。我知道一个事实,即条目“peach”出现在每一行中,并且只出现一次(peach在列表中的位置可能不同,列表中其他项目的出现可能不同)。提前谢谢

我试过(但没有成功)

你可以试试下面的方法

create table test(test VARCHAR(255));
Query OK, 0 rows affected (0.26 sec)

INSERT INTO test VALUES('apple, orange, peach, banana,....');
Query OK, 1 row affected (0.00 sec)

SELECT * FROM test;
+-----------------------------------+
| test                              |
+-----------------------------------+
| apple, orange, peach, banana,.... |
+-----------------------------------+
1 row in set (0.00 sec)

UPDATE test SET test = REPLACE(test,'peach,','peach,lemon,') WHERE test like '%peach,%';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

SELECT * FROM test;
+-----------------------------------------+
| test                                    |
+-----------------------------------------+
| apple, orange, peach,lemon, banana,.... |
+-----------------------------------------+
1 row in set (0.00 sec)

如果字符串
'peach'
未作为“列表”中任何其他值的一部分出现(也就是说,列表中没有出现任何术语,例如
'impeach'
'peachtree'
,然后您可以使用
替换
字符串函数查找
'peach'
的出现,并将其替换为
'peach,lemon'

例如:

UPDATE mytable
   SET mycol = REPLACE(mycol, 'peach', 'peach,lemon')

在更一般的情况下,您可能无法保证
'peach'
不属于列表中其他术语的一部分,这样做的表达式会更复杂。

是否应
苹果、桃、橙
导致
苹果、桃、柠檬、橙
苹果、桃、橙、柠檬
?(或其他相关内容:))苹果、橘子、桃子、柠檬、香蕉……你的意思是
REPLACE(列名称,'peach','peach','lemon',)
不,我尝试了concat和REPLACE。谢谢你的快速回复。我们希望,不会存在重复项。不,任何一行的列表中都没有重复项。我尝试过为某一行执行此操作(以验证)并且它得到了相同的数据截断警告。感谢您的快速回复。不幸的是,它没有工作,我得到了带有警告代码的警告“第1行的列名称的数据截断”1265@crazyim5然后您的字段被定义为太短。例如,当您将字段定义为
VARCHAR(5)时,将出现警告
并尝试插入6个字符。这是一个很好的捕获。幸运的是列表中没有弹劾或任何其他子字符串版本的peach。
update tblname
set clm_name= replace(clm_name,'peach','peach,lemon') 
where clm_name like '%peach%';
UPDATE mytable
   SET mycol = REPLACE(mycol, 'peach', 'peach,lemon')
update tblname
set clm_name= replace(clm_name,'peach','peach,lemon') 
where clm_name like '%peach%';