Salesforce 如何使用SOQL仅更新列中的空值?

Salesforce 如何使用SOQL仅更新列中的空值?,salesforce,soql,salesforce-marketing-cloud,Salesforce,Soql,Salesforce Marketing Cloud,我在Salesforce Marketing Cloud Automation Studio的查询活动中遇到了SOQL问题 我想在一个名为“date of birth”的列中用用户的出生日期更新空值,该列包含大量数据类型为date的用户的出生日期 我想根据另一个名为“date of birth 2”的列更新此列“date of birth”,该列还包括大量用户的出生日期,但改为使用datatype=string 因此,我的目标是利用“date of birth 2”列中的数据,仅更新“date

我在Salesforce Marketing Cloud Automation Studio的查询活动中遇到了SOQL问题

我想在一个名为“date of birth”的列中用用户的出生日期更新空值,该列包含大量数据类型为date的用户的出生日期

我想根据另一个名为“date of birth 2”的列更新此列“date of birth”,该列还包括大量用户的出生日期,但改为使用datatype=string

因此,我的目标是利用“date of birth 2”列中的数据,仅更新“date of birth”列中缺少的日期字段

使用当前非常简单的代码(请参见img 1/2),我要么不更新数据扩展中的任何内容(添加WHERE column=NULL时,请参见img 2),要么更新NULL值,但也覆盖数据扩展中的现有日期值(未添加WHERE column=NULL时,请参见img 1)。我想知道是否可以简单地更新空字段并保留当前填充的字段


期待您的回复,如果我的疑问不清楚,请告诉我

因此我认为您可以查询(出生日期)字段等于null且(出生日期2)不等于null的对象

从objectName中选择(出生日期),(出生日期2),其中(出生日期)=NULL和(出生日期2)!=空的

请确保您的(出生日期2)字段必须为YYYY-MM-DD格式

示例代码

List<objectName> li = [SELECT (date of birth),(date of birth 2) FROM objectName WHERE (date of birth) = NULL AND (date of birth 2) != NULL];
for(objectName o : li){
 (date of birth) = Date.valueOf((date of birth2));
}
update li;
List li=[从objectName中选择(出生日期),(出生日期2),其中(出生日期)=NULL和(出生日期2)!=NULL];
for(对象名o:li){
(出生日期)=日期价值((出生日期2));
}
更新李;

Hi Andreas,想进一步澄清您的问题,我猜您想将uuuu/12/2020(出生日期)更新为10/12/2020(出生日期),因为您的(出生日期2)包含该用户的10/12/2020,对吗?Hi Asheesh,是的,您是正确的。同时,我希望确保在基于(出生日期2)更新列时不会覆盖(出生日期)中已填写的某些字段。如果有什么不清楚,请告诉我。感谢您的时间。嗨,Andreas,谢谢您的澄清。我想问的另一件事是,您使用的是哪种数据类型是Date还是DateTimeHi Asheesh,好问题。我们使用的数据类型是Date,而不是DateTime。嗨,Andreas,如果我错了,请纠正我。如果您的(出生日期)字段是Date类型,那么它如何存储日期、月份或年份的空值?它应该引发异常。我假设您的(出生日期)字段是否有值。您好,Asheesh,这看起来像是触发SOQL的Apex代码(如果我错了,请更正我),但是,我无法在SFMC的Automation Studio中执行Apex。我可以使用SOQL或(服务器端)Javascript->是否可以单独使用SOQL(SQL活动)或Javascript(脚本活动)执行此类操作?