SQLite中REPLACE语句的使用介绍

1,113 阅读5分钟

在管理大型数据库时,有时我们希望替换一个字符串数据域的子串。我们有机会删除该项目,然后用一个属性重新添加它。然而,在SQLite中使用replace是一个更有效的方法来完成这个任务。SQLite中的REPLACE语句是用来丢弃和重新插入现有条目的。REPLACE SQLite命令是INSERT OR REPLACE INSERT命令的一个名称。

SQLite中的REPLACE语句的工作原理是,一旦UNIQUE或PRIMARY KEY约束失效,它将消除有问题的条目并插入新的行。在SQLite中,REPLACE命令通常执行两步操作。第一个步骤是它开始删除违反约束的记录,第二个步骤是添加另一条记录。所以,如果在第二步插入新的记录时出现了违反约束的情况,事务将被回滚。

通过一个例子,我们将了解SQLite Replace语句,以及如何使用它们来删除和重新插入现有条目。

SQLite中REPLACE语句的语法。

SQLite Replace操作的语法如下。

>> REPLACE(string,find theSUBSTRING, REPLACE WITH NEWstring)

它的工作原理是传递三个参数:包含要替换的子串的 "字符串"。要替换的那个文本里面的 "子串",以及要用新字符串 "替换 "的字符串。

如何在SQLite中使用REPLACE语句。

在这里,我们举出一些SQLite替换操作的例子,看看它在SQLite中的用法。请注意,在使用替换函数时,要考虑到区分大小写的替换。

在下图中我们有一个简单的REPLACE操作。首先,我们需要一个SELECT语句,然后使用一个REPLACE函数,我们向其传递了三个参数。第一个参数是字符串 "Apple juice",第二个参数是我们想要替换的 "Apple"。这个 "Apple "是给定字符串的一个子串,第三个参数传递了一个新的字符串 "orange",它被子串 "Apple "所替换。下面的查询结果在图片中显示如下。

>> SELECT REPLACE('Apple juice', 'Apple', 'Orange')。

我们有第二个REPLACE案例,它也需要三个参数。第一个参数是字符串 "chicken burger",接下来我们有子字符串 "Pizza",这不是我们定义的字符串的一部分。请注意,如果在第一个参数中找不到第二个参数,则不会有任何改变,而是返回原始文本。图中显示了REPLACE函数的查询和其相应的结果。

>> SELECT REPLACE('Chicken Burger', 'Pizza', 'Pattie')。

这个是我们的第三种情况,我们的第二个参数是一个空字符串。这里,REPLACE函数也没有改变什么,只是返回我们指定的源字符串。

>> SELECT REPLACE('Diamond Ring', '', 'Gold')。

然而,第三个参数不可能是这样的。如果该字符串是空的,并且第一个参数包含第二个参数。第二个参数将被从字符串中删除,如下所示。

>> SELECT REPLACE('黄灯', '黄', '')。

如果字符串不包含我们的第二个参数,它将返回字符串。

>> SELECT REPLACE('Vitamin C', '铁', '')。

现在,我们在这里用整数值替换了一个字符串,这在SQLite的REPLACE函数中是可能的。结果显示,字符串被替换成了数字值。

>> SELECT REPLACE('ID number', 'number', 8)。

例1:为使用REPLACE函数创建一个表。

我们已经创建了一个表,表示为 "creams"。我们为这个表分配了三列,并设置了它们的数据类型。如下图所示,该表已成功创建。

CREATE TABLE creams(
cream_idINT PRIMARY KEY,
cream_nameCHAR(10),
cream_priceFLOAT

)。

然后,我们对表 "creams "中的每一列插入了数值,如下所示。

INSERT INTOcreamsVALUES (1, 'ice-cream', 300 );
INSERT INTOcreamsVALUES (2, 'chocol-cream', 600);
INSERT INTOcreamsVALUES (3, 'cheese-cream', 560);
INSERT INTOcreamsVALUES (4, 'caramel-cream', 600);
INSERT INTOcreamsVALUES (5, 'nut-cream', 450 );

要查看表的记录,只需使用下面的查询,表的记录将被显示如下。

例2:在UPDATE语句中使用REPLACE函数。

在这里,我们有一个UPDATE语句,我们应用于表 "creams"。这个更新语句通过调用SET操作符来设置表的列 "cream_name "的值。对于SET操作符,我们分配了一个REPLACE函数,在REPLACE函数中,我们传递了三个参数。第一个参数是我们想要替换的列名 "cream_name"。然后,字符串 "cream "被用作第二个参数,替换将在此基础上实现。当REPLACE函数从表 "creams "的列 "cream_name "中找到字符串 "cream "时,它应该用新的字符串 "mayo "来改变它。REPLACE函数将字符串 "mayo "作为第三个输入。

UPDATE
creams
SET
cream_name= REPLACE(cream_name,'cream',' mayo');

在下面的结果界面中,变化成功发生。

例3:在SQLite中的唯一索引上使用REPLACE函数。

表 "creams "中的 "cream name "列将被用来生成一个索引。我使用了下面的SQLite查询,在字段 "cream name "上创建一个唯一索引。

>> CREATE UNIQUE INDEXidx_creams_cream_nameONcreams(cream_name);

现在,我们将添加一个约束条件,用于将奶油的名称添加到表 "cream "中。如果奶油名称已经存在,它应该更新该条目。否则,它将需要输入一个新的奶油名称。我们通过利用SQLite的Replace语句简单地添加了这个功能,如下所示。

REPLACE INTOcreams(cream_id,cream_name,cream_price)
VALUES (6,'Garlic-cream', 200);

由于cream_name "Garlic-mayo "在表 "creams "中不存在,下面的SQLite REPLACE语句在其中引入了一条新行。运行select语句后,SQLite shell会用新插入的记录执行表creams的记录。

结论

这就是SQLite Replace函数的性能,它可以根据我们的规范检索出我们需要的数据。我们已经定义了我们在SQLite中使用的REPLACE函数语法。然后,我们探讨了一些不同的情况,以显示REPLACE函数如何应对这些情况。最后,我们有了在SQLite表中使用的REPLACE函数的实例。