我们当前正在将数据从SalesForce提取到SQL数据库表中。在为潜在顾客ID创建的不同对象上有2个自定义字段,并查找链接了事件/任务的查找(可以是客户ID,联系人ID或潜在顾客ID)。两者都提取了15位ID。
我正在尝试查找是否有任何SQL代码或SQL函数可让我将15位数字转换为18位ID。
我需要有18位ID才能加入其他对象。
感谢您的帮助。
我们已经尝试在SalesForce中使用CASESAFEID(Id)函数,但是使用已经设置的API和可见性级别,我们的特定ETL并未显示该字段。另外,我们需要聘请顾问来处理查找列。
我想获取15位数字的ID,并将其转换为18位数字的代码。如果SalesforceID为0035000002tAzbu,我如何获取转换后的18位数字值为0035000002tAzbuACC。我需要使用SQL查询或SQL函数获取最后3位数字。
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以在sql数据库中编写自定义函数。
例如在雪花中,您可以创建类似这样的功能
CREATE OR REPLACE FUNCTION dw.my_schema.f_sfdc_ch15_to_ch18("txt" string)
RETURNS string
LANGUAGE JAVASCRIPT
AS '
if ( txt == undefined || txt == "" || typeof txt == "undefined" || txt == null) {
return ;
} else {
var id15, id18;
if (txt.length == 18) {
return txt;
} else if (txt.length == 15) {
id15 = [txt.trim()];
} else {
return "";
}
for ( var x=0; x < id15.length; x++ ) {
var s = "";
for ( var i=0; i<3; i++) {
var f = 0;
for (var j=0; j<5; j++) {
var c = id15[x].charAt(i*5+j);
if (c>="A" && c<="Z") {
f+=1<<j;
}
}
s += "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345".charAt(f);
}
id18 = id15[x]+s;
}
}
return id18.toString();
';
并像这样使用它
select dw.my_schema.f_sfdc_ch15_to_ch18(id15) from mytable;