📜  动态 soql 转义单引号 (1)

📅  最后修改于: 2023-12-03 15:22:46.807000             🧑  作者: Mango

动态 SOQL 转义单引号

在Apex中使用动态SOQL查询时,如果查询条件包含单引号,就需要对单引号进行转义。本文将介绍在动态SOQL中如何转义单引号。

在静态查询中转义单引号

在静态SOQL查询中,可以使用双引号将字符串括起来来转义单引号。

例如:

List<Account> accounts = [
  SELECT Id, Name
  FROM Account
  WHERE Name = 'Acme\'s Account'
];

在上面的例子中,我们使用单引号括起了字符串Acme's Account,并通过\来转义单引号。这个查询将返回所有名称为Acme's Account的帐户。

在动态查询中转义单引号

在动态SOQL查询中,我们需要使用Apex字符串函数String.escapeSingleQuotes()来转义单引号。

例如:

String accountName = 'Acme\'s Account';
String query = 'SELECT Id, Name FROM Account WHERE Name = \'' + String.escapeSingleQuotes(accountName) + '\'';
List<Account> accounts = Database.query(query);

在上面的例子中,我们定义了一个包含单引号的查询条件,并在调用String.escapeSingleQuotes()时使用了单引号来括起来,将Acme's Account转义为Acme\\'s Account。这个查询将返回所有名称为Acme's Account的帐户。

结论

在动态SOQL中转义单引号是很重要的,因为如果我们不这样做,我们将会遇到语法错误。使用String.escapeSingleQuotes()函数是转义单引号的最佳实践,它可以确保我们的查询条件总是能够正确执行。

参考