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

时间:2014-02-24 05:39:14

标签: mysql sql

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

for example: 
apple, orange, peach, banana,.... 

所以这里我要说我想在条目lemon之后将peach追加到每一行。我知道条目“桃子”出现在每一行中它只出现一次(列表中桃子的位置可能不同,列表中其他项目的出现可能会有所不同)。提前致谢!

我尝试过(但没有奏效)

UPDATE TABLE_NAME 
concat (COLUMN_NAME, 'lemon') 
where COLUMN_NAME like '%peach,%'; 

4 个答案:

答案 0 :(得分:5)

UPDATE TABLE_NAME 
set COLUMN_NAME= replace(COLUMN_NAME, 'peach','peach,lemon') 
where COLUMN_NAME like '%peach,%'; 

答案 1 :(得分:1)

您可以尝试以下

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)

答案 2 :(得分:1)

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

例如:

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

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

答案 3 :(得分:1)

update tblname
set clm_name= replace(clm_name,'peach','peach,lemon') 
where clm_name like '%peach%';