带单引号的 ADF 数据流连接表达式
ADF data flow concat expression with single quote
我需要使用 Azure 数据流表达式生成器生成一个 SQL 字符串,但它不允许我使用 Concat 函数在我的字符串之间添加单引号
我需要一个 SQL 字符串如下
SELECT * FROM ABC WHERE myDate <= '2019-10-10'
这里 2019-10-10 来自一个参数,所以我构建的表达式如下所示
concat('SELECT * FROM ABC WHERE myDate >=','''',$ToDate,'''')
但是上面的语句无法解析表达式。
这可以使用数据工厂表达式轻松实现,但不能使用 Azure 数据流表达式。
今天,你可以这样做:
'select * from saleslt.product where myDate >= \'' + $ToDate + '\''
基本上,只需使用带有转义单引号的 +。
我们将在下周发布一项新的字符串插值功能,以简化此操作。任何表达式、列或参数都可以在双引号内使用。
您的示例将如下所示:
"SELECT * FROM ABC WHERE myDate >='{$ToDate}'"
容易多了。下周该功能准备就绪后,我会发布公告。
我打电话给 Azure 支持,他们告诉我使用波纹管表达式可以帮助我们向列或数据添加单引号:
toString('\''+ toString(byName('col2'))+ '\'')
所以你的表达应该是:
concat('SELECT * FROM ABC WHERE myDate >=',toString('\''+ toString(byName('$ToDate'))+ '\'') )
我在日期类型 column2 中进行了测试,效果很好。
希望对您有所帮助。
经过大量的尝试和实验,
我有一个解决方案,使用''(一个额外的引号)而不是'。它会起作用。
例如。
@concat('Select batchid from execution_Log where Execution_status=''Success'' and Hierachy_ID = ', pipeline().parameters.Hierachy_ID)
我在这方面也遇到了很多麻烦,试图传递 2 个带有引号的时间戳变量。大量的跟踪和错误,我能够使用字符串插值来实现它。表达式最终为:
"SELECT c.data.user_id ... FROM c WHERE c.data.date > '{toString($StartTime)}' AND c.data.date <= '{toString($EndTime)}'"
可以在参数两边加4个逗号来指定。当您传递 SQL 查询且参数为字符串格式时,这将适用。
@concat('SELECT * FROM DW_DEV.Schema_Name.DEMO_CONFIG WHERE SOURCESYSTEM = ','''',pipeline().parameters.SourceSystem,'''')
我需要使用 Azure 数据流表达式生成器生成一个 SQL 字符串,但它不允许我使用 Concat 函数在我的字符串之间添加单引号
我需要一个 SQL 字符串如下
SELECT * FROM ABC WHERE myDate <= '2019-10-10'
这里 2019-10-10 来自一个参数,所以我构建的表达式如下所示
concat('SELECT * FROM ABC WHERE myDate >=','''',$ToDate,'''')
但是上面的语句无法解析表达式。
这可以使用数据工厂表达式轻松实现,但不能使用 Azure 数据流表达式。
今天,你可以这样做:
'select * from saleslt.product where myDate >= \'' + $ToDate + '\''
基本上,只需使用带有转义单引号的 +。
我们将在下周发布一项新的字符串插值功能,以简化此操作。任何表达式、列或参数都可以在双引号内使用。
您的示例将如下所示:
"SELECT * FROM ABC WHERE myDate >='{$ToDate}'"
容易多了。下周该功能准备就绪后,我会发布公告。
我打电话给 Azure 支持,他们告诉我使用波纹管表达式可以帮助我们向列或数据添加单引号:
toString('\''+ toString(byName('col2'))+ '\'')
所以你的表达应该是:
concat('SELECT * FROM ABC WHERE myDate >=',toString('\''+ toString(byName('$ToDate'))+ '\'') )
我在日期类型 column2 中进行了测试,效果很好。
希望对您有所帮助。
经过大量的尝试和实验, 我有一个解决方案,使用''(一个额外的引号)而不是'。它会起作用。 例如。
@concat('Select batchid from execution_Log where Execution_status=''Success'' and Hierachy_ID = ', pipeline().parameters.Hierachy_ID)
我在这方面也遇到了很多麻烦,试图传递 2 个带有引号的时间戳变量。大量的跟踪和错误,我能够使用字符串插值来实现它。表达式最终为:
"SELECT c.data.user_id ... FROM c WHERE c.data.date > '{toString($StartTime)}' AND c.data.date <= '{toString($EndTime)}'"
可以在参数两边加4个逗号来指定。当您传递 SQL 查询且参数为字符串格式时,这将适用。
@concat('SELECT * FROM DW_DEV.Schema_Name.DEMO_CONFIG WHERE SOURCESYSTEM = ','''',pipeline().parameters.SourceSystem,'''')