外部输入 '\' 需要 {')', ','}。查询在 sql notebook cell 中工作但不在 databricks connect 中工作

Extraneous input '\' expecting {')', ','}. Query working in sql notebook cell but not in databricks connect

执行以下查询时

SELECT * FROM companies JOIN employments on companies.company_normalized LIKE CONCAT('%',
    replace(employments.displayname_normalized, '\', ''), '%') or employments.displayname_normalized LIKE CONCAT(
    '%', replace(companies.company_normalized,'\', ''), '%')

它在数据块 sql 笔记本单元上工作正常。

然而,当尝试使用 spark sql 执行器 运行 相同的查询时,即 spark.sql(query),这个错误说: 替换子句中的无关输入 '' 需要 {')', ','}。

有解决办法吗?

如果您使用正则表达式,则需要一个反斜杠:

spark.sql("SELECT * FROM companies JOIN employments on companies.company_normalized LIKE CONCAT('%',
replace(employments.displayname_normalized, '\', ''), '%') or employments.displayname_normalized LIKE CONCAT(
'%', replace(companies.company_normalized,'\', ''), '%')")

或者您需要转义斜杠,那么您需要使用“\\\\”进行双重转义:

spark.sql("SELECT * FROM companies JOIN employments on companies.company_normalized LIKE CONCAT('%',
replace(employments.displayname_normalized, '\\', ''), '%') or employments.displayname_normalized LIKE CONCAT(
'%', replace(companies.company_normalized,'\\', ''), '%')")