0

我想在 SQL 中在一个列中插入一个新词,在另一个特定词之后有文本,例如:我有文本“我的车是黑色的”,我想在新文本 My 之后插入新词应该是:我的新车是黑色的。

4

2 回答 2

1

你没有提到数据库,所以我会回答 SQL Server。它碰巧有一个函数调用stuff(),在这种情况下真的很有帮助。以下是代码:

with t as (select 'My car is black' as col)
select STUFF(col, charindex('My', col) + LEN('My') + 1, 0, 'new ')
from t;

您可以通过提取字符串片段在其他数据库中执行等效操作。但是,字符串函数在数据库之间往往会有所不同,因此没有一种形式适用于所有(甚至几乎所有)数据库。

编辑:

根据您的描述,我认为以下可能是您真正想要的:

select replace(col, 'sticker', 'sticker SHOCK')
from t;

这适用于大多数数据库。您也可以将其作为更新来执行:

update t
    set col = replace(col, 'sticker', 'sticker SHOCK')
    where col like '%sticker%';
于 2013-07-16T13:56:55.133 回答
0

您需要将短语的左右部分连接到要插入的新单词。根据 DBMS,您将使用各种函数来确定左右部分。

在 SQL Server 中,您可以执行以下操作:

UPDATE tbl SET phrase = LEFT(phrase, 3) + 'new ' + RIGHT(phrase, 12);

哪个会产生

| 短语 |
----------------------
| 我的新车是黑色的 |

演示

于 2013-07-16T13:52:41.197 回答