SELECT trim(regexp_substr(PARAMETER_VALUE,'[^|]+', 1, level) ) PARAMETER_VALUE FROM (SELECT AP.PARAMETER_VALUE PARAMETER_VALUE FROM FM_APPLICATION_PARAMETERS AP WHERE AP.PARAMETER_CODE = 'OSO_SERVICE_CODE_CATEGORY_MAPPING' ) CONNECT BY regexp_substr(PARAMETER_VALUE, '[^|]+', 1, level) is not null ORDER BY level;上面的sql是oracle的寫法,請轉換為sparksql的寫法.
时间: 2024-02-20 16:57:59 浏览: 124
在SparkSQL中,可以使用split函数来实现类似的功能。以下是相应的SparkSQL代码:
```
SELECT split(PARAMETER_VALUE, '[|]')[pos] as PARAMETER_VALUE
FROM (
SELECT PARAMETER_VALUE, posexplode(split(PARAMETER_VALUE, '[|]'))
FROM FM_APPLICATION_PARAMETERS
WHERE PARAMETER_CODE = 'OSO_SERVICE_CODE_CATEGORY_MAPPING'
) t
ORDER BY pos
```
这里使用了posexplode函数来展开数组,然后再根据pos来获取数组中的对应元素。
阅读全文