我试图复制Oracle函数,但在我看来,并非所有的参数都存在于Instr中。我收到此错误,我希望将此转换包含在表中的"plataforma“字段中,但我不能:
SELECT
SUBSTR(a.SOURCE, 0, INSTR(a.SOURCE, '-', 1, 2) - 1) AS plataforma,
COUNT(*) AS qtd
FROM db1.table AS as a
LEFT JOIN db1.table2 AS b ON a.ID=b.id
GROUP BY SUBSTR(a.SOURCE, 0, INSTR(a.SOURCE, '-', 1, 2) - 1)
ORDER BY qtdApacheSpark2.0数据库在运行此查询时遇到错误。运行查询错误: org.apache.spark.sql.AnalysisException:函数instr的无效参数数。预期: 2;发现: 4;第8行
我用这种方式对字段进行了转换,但我不知道它是否正确:

如何在Spark中复制相同的Oracle功能?我要做的就是:
资料来源:
apache-spark-sql
sql-server-dw结果:
apache-spark
sql-server发布于 2020-02-03 21:16:13
您要寻找的是substring_index函数:
substring_index('apache-spark-sql', '-', 2)它返回两个-出现之前的子字符串。
我想您希望在最后一次出现-之前获得子字符串。因此,您可以计算输入字符串中的-数,并将其与substring_index函数组合如下:
substring_index(col, '-', size(split(col, '-')) - 1)其中size(split(col, '-')) - 1给出了-发生的次数。
https://stackoverflow.com/questions/60045599
复制相似问题