如何停止Azure数据工厂使用\转义双引号

cfh9epnr  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(119)

我在Azure数据工厂管道中有一个查找活动,它从存储过程返回连接字符串的输出;

SELECT STRING_AGG(CONCAT('"', id, '"'), ',') AS id
FROM #processedRecords;

这将返回如下所示的输出;

"0xE86B6656CA08E3B7AC704ECFC0F9A1B5086DF3461EE446999C523710AFB31888","0x6109C57BEBAE6BE14E4955E51B076E72A6FE5E0251D7043E5721020676B9CA6D","0x1E17C7C700468FD08D3F020CAF100C9A60D843A4D3FCCA726A07AFAD77AC825A"

当我在ADF中运行查找活动时,它会输出以下内容:

{
    "firstRow": {
        "id": "\"0xE86B6656CA08E3B7AC704ECFC0F9A1B5086DF3461EE446999C523710AFB31888\",\"0x6109C57BEBAE6BE14E4955E51B076E72A6FE5E0251D7043E5721020676B9CA6D\",\"0x1E17C7C700468FD08D3F020CAF100C9A60D843A4D3FCCA726A07AFAD77AC825A\""

我如何才能阻止它转义双引号,使它不包含反斜杠()。
我已经尝试过在一个集合变量中进行替换,像这样;

@replace(activity('Lookup JSON').output.firstRow.id,'\' , '')

但它还是逃过了双引号?

h7appiyu

h7appiyu1#

在ADF中,默认情况下,它将为字符串添加backslash(\)作为double quote(")的转义字符。但当我们将此字符串存储在ADF的任何文件中时,它不会成为字符串的一部分,并且在ADF中进行字符串操作时也不会出现问题。
出于演示的目的,我尝试了相同的场景,这是我的查找输出:

我已经使用下面的表达式将上面带有反斜杠的字符串的**长度存储在一个变量中。

@string(length(activity('Lookup1').output.value[0].id))

不带反斜杠(\)的同一字符串长度:

@string(length('"0xE86B6656CA08E3B7AC704ECFC0F9A1B5086DF3461EE446999C523710AFB31888","0x6109C57BEBAE6BE14E4955E51B076E72A6FE5E0251D7043E5721020676B9CA6D","0x1E17C7C700468FD08D3F020CAF100C9A60D843A4D3FCCA726A07AFAD77AC825A"'))

你可以看到两者的长度相同,这意味着在ADF中两个字符串是相同的。
它(反斜杠(\))不会被替换,因为它不存在于字符串中,但ADF只是默认情况下将它添加为转义字符。您可以根据需要像使用普通字符串一样使用查找输出字符串。

相关问题