使用字符的位置从Apache钻取中的字符串获取子字符串

时间:2018-08-02 10:51:10

标签: sql apache-drill

请帮助我解决问题。

从字符串'/ This / is / apache / drill / queries'中,我希望在Apache Drill上运行的sql查询获取子字符串'drill',该子字符串在第四次出现'/'之后出现

注意:字符串的长度不同,因此'/'的位置也不同。 字符串以'/'

开头

在练习中,instr(string,'/',1,4)将不起作用。因此,我无法获得在'/'的第4次出现后出现的字符串。

2 个答案:

答案 0 :(得分:3)

钻具有split UDF,其作用与String.split()相同,因此此查询:

SELECT split(a, '/')[4] FROM (VALUES('/This/is/apache/drill/queries')) t(a);

将返回期望的结果:

+---------+
| EXPR$0  |
+---------+
| drill   |
+---------+

答案 1 :(得分:0)

您可以为此使用REGEXP_REPLACE:

php artisan route:clear

上面的正则表达式查找第四个'/',并从那里获取内容直到第五个'/'。